• Marc Kleine-Budde's avatar
    can: tcan4x5x: fix data length in regmap write path · 6093f744
    Marc Kleine-Budde authored
    In regmap_spi_gather_write() the "addr" is prepared. The chip expects
    the number of 32 bit words to write in the lower 8 bits of addr. However
    the number of byte to write in shifted left by 3 (== divided by 8).
    
    The function tcan4x5x_regmap_write() is called with a data buffer, which
    holds the register information in the first 32 bits, followed by the
    actual data. tcan4x5x_regmap_write() calls regmap_spi_gather_write()
    with the val pointer pointing to the actual data (i.e. the original
    pointer is incremented by 4 bytes), but without decrementing the count.
    
    If the regmap framework only calls tcan4x5x_regmap_write() to read
    single 32 bit registers these two bugs cancel each other.
    
    This patch fixes the code.
    
    Fixes: 5443c226 ("can: tcan4x5x: Add tcan4x5x driver to the kernel")
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    6093f744
tcan4x5x.c 13 KB