• L
    dmaengine: Fix access to uninitialized dma_slave_caps · 53a256a9
    Lukas Wunner 提交于
    dmaengine_desc_set_reuse() allocates a struct dma_slave_caps on the
    stack, populates it using dma_get_slave_caps() and then accesses one
    of its members.
    
    However dma_get_slave_caps() may fail and this isn't accounted for,
    leading to a legitimate warning of gcc-4.9 (but not newer versions):
    
       In file included from drivers/spi/spi-bcm2835.c:19:0:
       drivers/spi/spi-bcm2835.c: In function 'dmaengine_desc_set_reuse':
    >> include/linux/dmaengine.h:1370:10: warning: 'caps.descriptor_reuse' is used uninitialized in this function [-Wuninitialized]
         if (caps.descriptor_reuse) {
    
    Fix it, thereby also silencing the gcc-4.9 warning.
    
    The issue has been present for 4 years but surfaces only now that
    the first caller of dmaengine_desc_set_reuse() has been added in
    spi-bcm2835.c. Another user of reusable DMA descriptors has existed
    for a while in pxa_camera.c, but it sets the DMA_CTRL_REUSE flag
    directly instead of calling dmaengine_desc_set_reuse(). Nevertheless,
    tag this commit for stable in case there are out-of-tree users.
    
    Fixes: 27242021 ("dmaengine: Add DMA_CTRL_REUSE")
    Reported-by: Nkbuild test robot <lkp@intel.com>
    Signed-off-by: NLukas Wunner <lukas@wunner.de>
    Cc: stable@vger.kernel.org # v4.3+
    Link: https://lore.kernel.org/r/ca92998ccc054b4f2bfd60ef3adbab2913171eac.1575546234.git.lukas@wunner.deSigned-off-by: NVinod Koul <vkoul@kernel.org>
    53a256a9
dmaengine.h 45.7 KB