drm/buddy: fix range bias
authorMatthew Auld <matthew.auld@intel.com>
Mon, 19 Feb 2024 12:18:52 +0000 (12:18 +0000)
committerChristian König <christian.koenig@amd.com>
Wed, 28 Feb 2024 07:02:35 +0000 (08:02 +0100)
commitf41900e4a6ef019d64a70394b0e0c3bd048d4ec8
treeac2f7fea4880b798a1b3226c553762c0e10fded0
parent00d6a284fcf3fad1b7e1b5bc3cd87cbfb60ce03f
drm/buddy: fix range bias

There is a corner case here where start/end is after/before the block
range we are currently checking. If so we need to be sure that splitting
the block will eventually give use the block size we need. To do that we
should adjust the block range to account for the start/end, and only
continue with the split if the size/alignment will fit the requested
size. Not doing so can result in leaving split blocks unmerged when it
eventually fails.

Fixes: afea229fe102 ("drm: improve drm_buddy_alloc function")
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: <stable@vger.kernel.org> # v5.18+
Reviewed-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240219121851.25774-4-matthew.auld@intel.com
Signed-off-by: Christian König <christian.koenig@amd.com>
drivers/gpu/drm/drm_buddy.c