• S
    spi: fix undefined behaviour in SPI_BPW_RANGE_MASK · 4dd9572a
    Stephen Warren 提交于
    The parameters to SPI_BPW_RANGE_MASK() are in the range 1..32. If 32 is
    used as a parameter, part of the expression is "1 << 32". Since 32 is >=
    the size of the type in use, such a shift is undefined behaviour. Add
    macro SPI_BIT_MASK to Implement a special case and thus avoid undefined
    behaviour. Use this new macro rather than BIT() when implementing
    SPI_BPW_RANGE_MASK().
    
    This fixes build warnings such as:
    drivers/spi/spi-gpio.c:446:2: warning: left shift count >= width of type [enabled by default]
    
    SPI_BPW_MASK() already avoids this, since its parameter is also in range
    1..32, yet it only shifts by up to one less than the input parameter.
    Reported-by: NFengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: NStephen Warren <swarren@nvidia.com>
    Signed-off-by: NMark Brown <broonie@linaro.org>
    4dd9572a
spi.h 33.5 KB