dmaengine: dw-axi-dmac: Do not dereference NULL structure
[ Upstream commitbe4d46edee
] If "vdesc" is NULL, it cannot be used with vd_to_axi_desc(). Leave "bytes" unchanged at 0. Seen under GCC 13 with -Warray-bounds: ../drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c: In function 'dma_chan_tx_status': ../drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c:329:46: warning: array subscript 0 is outside array bounds of 'struct virt_dma_desc[46116860184273879]' [-Warray-bounds=] 329 | bytes = vd_to_axi_desc(vdesc)->length; | ^~ Fixes:8e55444da6
("dmaengine: dw-axi-dmac: Support burst residue granularity") Cc: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Cc: Vinod Koul <vkoul@kernel.org> Cc: dmaengine@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20230127223623.never.507-kees@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
ad222c9af2
Коммит
0bb33c5fe4
|
@ -288,8 +288,6 @@ dma_chan_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,
|
||||||
len = vd_to_axi_desc(vdesc)->hw_desc[0].len;
|
len = vd_to_axi_desc(vdesc)->hw_desc[0].len;
|
||||||
completed_length = completed_blocks * len;
|
completed_length = completed_blocks * len;
|
||||||
bytes = length - completed_length;
|
bytes = length - completed_length;
|
||||||
} else {
|
|
||||||
bytes = vd_to_axi_desc(vdesc)->length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_unlock_irqrestore(&chan->vc.lock, flags);
|
spin_unlock_irqrestore(&chan->vc.lock, flags);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче