lkml.org 
[lkml]   [2023]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 4/9] ASoC: kirkwood: Iterate over array indexes instead of using pointer math
    Date
    From: Kees Cook <keescook@chromium.org>

    [ Upstream commit b3bcedc0402fcdc5c8624c433562d9d1882749d8 ]

    Walking the dram->cs array was seen as accesses beyond the first array
    item by the compiler. Instead, use the array index directly. This allows
    for run-time bounds checking under CONFIG_UBSAN_BOUNDS as well. Seen
    with GCC 13 with -fstrict-flex-arrays:

    ../sound/soc/kirkwood/kirkwood-dma.c: In function
    'kirkwood_dma_conf_mbus_windows.constprop':
    ../sound/soc/kirkwood/kirkwood-dma.c:90:24: warning: array subscript 0 is outside array bounds of 'const struct mbus_dram_window[0]' [-Warray-bounds=]
    90 | if ((cs->base & 0xffff0000) < (dma & 0xffff0000)) {
    | ~~^~~~~~

    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: alsa-devel@alsa-project.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20230127224128.never.410-kees@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/kirkwood/kirkwood-dma.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/sound/soc/kirkwood/kirkwood-dma.c b/sound/soc/kirkwood/kirkwood-dma.c
    index 35ca8e8bb5e52..9736fb36082fb 100644
    --- a/sound/soc/kirkwood/kirkwood-dma.c
    +++ b/sound/soc/kirkwood/kirkwood-dma.c
    @@ -90,7 +90,7 @@ kirkwood_dma_conf_mbus_windows(void __iomem *base, int win,

    /* try to find matching cs for current dma address */
    for (i = 0; i < dram->num_cs; i++) {
    - const struct mbus_dram_window *cs = dram->cs + i;
    + const struct mbus_dram_window *cs = &dram->cs[i];
    if ((cs->base & 0xffff0000) < (dma & 0xffff0000)) {
    writel(cs->base & 0xffff0000,
    base + KIRKWOOD_AUDIO_WIN_BASE_REG(win));
    --
    2.39.0
    \
     
     \ /
      Last update: 2023-03-27 00:36    [W:2.775 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site