• Arnd Bergmann's avatar
    spi: rspi: avoid uninitialized variable access · db300838
    Arnd Bergmann authored
    The newly introduced rspi_pio_transfer_in_or_our() function must
    take either a valid 'rx' or 'tx' pointer, and has undefined behavior
    if both are NULL, as found by 'gcc -Wmaybe-unintialized':
    
    drivers/spi/spi-rspi.c: In function 'rspi_pio_transfer_in_or_our':
    drivers/spi/spi-rspi.c:558:5: error: 'len' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    The analysis of the function is correct in principle, but the code
    is currently safe because both callers always pass exactly one
    of the two pointers.
    
    Looking closer at this function shows that having a combined
    method for rx and tx here actually increases the complexity
    and the size of the file. This simplifies it again by keeping
    the two separate, which then ends up avoiding that warning.
    
    Fixes: 3be09bec ("spi: rspi: supports 32bytes buffer for DUAL and QUAD")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    db300838
spi-rspi.c 35.2 KB