lkml.org 
[lkml]   [2022]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 019/112] drm/panfrost: Fix shrinker list corruption by madvise IOCTL
    Date
    From: Dmitry Osipenko <dmitry.osipenko@collabora.com>

    commit 9fc33eaaa979d112d10fea729edcd2a2e21aa912 upstream.

    Calling madvise IOCTL twice on BO causes memory shrinker list corruption
    and crashes kernel because BO is already on the list and it's added to
    the list again, while BO should be removed from the list before it's
    re-added. Fix it.

    Cc: stable@vger.kernel.org
    Fixes: 013b65101315 ("drm/panfrost: Add madvise and shrinker support")
    Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
    Signed-off-by: Steven Price <steven.price@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220630200601.1884120-3-dmitry.osipenko@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpu/drm/panfrost/panfrost_drv.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
    +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
    @@ -427,8 +427,8 @@ static int panfrost_ioctl_madvise(struct

    if (args->retained) {
    if (args->madv == PANFROST_MADV_DONTNEED)
    - list_add_tail(&bo->base.madv_list,
    - &pfdev->shrinker_list);
    + list_move_tail(&bo->base.madv_list,
    + &pfdev->shrinker_list);
    else if (args->madv == PANFROST_MADV_WILLNEED)
    list_del_init(&bo->base.madv_list);
    }

    \
     
     \ /
      Last update: 2022-07-19 14:22    [W:3.468 / U:0.912 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site