drm: Do not overrun array in drm_gem_get_pages()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 5 Oct 2023 13:56:47 +0000 (14:56 +0100)
committerMaxime Ripard <mripard@kernel.org>
Thu, 12 Oct 2023 08:44:06 +0000 (10:44 +0200)
commitb7fd68ab1538e3adb665670414bea440f399fda9
tree5c23ec8ae85f915b2f05a40a9e1f9cb85e42f958
parent2b7947bd32e243c52870d54141d3b4ea6775e63d
drm: Do not overrun array in drm_gem_get_pages()

If the shared memory object is larger than the DRM object that it backs,
we can overrun the page array.  Limit the number of pages we install
from each folio to prevent this.

Signed-off-by: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Link: https://lore.kernel.org/lkml/13360591.uLZWGnKmhe@natalenko.name/
Fixes: 3291e09a4638 ("drm: convert drm_gem_put_pages() to use a folio_batch")
Cc: stable@vger.kernel.org # 6.5.x
Signed-off-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20231005135648.2317298-1-willy@infradead.org
drivers/gpu/drm/drm_gem.c