Commit 03808abb authored by Lizhi Hou's avatar Lizhi Hou
Browse files

accel/amdxdna: Prevent ubuf size overflow



The ubuf size calculation may overflow, resulting in an undersized
allocation and possible memory corruption.

Use check_add_overflow() helpers to validate the size calculation before
allocation.

Fixes: bd72d4ac ("accel/amdxdna: Support user space allocated buffer")
Reviewed-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
Signed-off-by: default avatarLizhi Hou <lizhi.hou@amd.com>
Link: https://patch.msgid.link/20260217192815.1784689-1-lizhi.hou@amd.com
parent 1110a949
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#include <drm/drm_device.h>
#include <drm/drm_print.h>
#include <linux/dma-buf.h>
#include <linux/overflow.h>
#include <linux/pagemap.h>
#include <linux/vmalloc.h>

@@ -176,7 +177,10 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,
			goto free_ent;
		}

		exp_info.size += va_ent[i].len;
		if (check_add_overflow(exp_info.size, va_ent[i].len, &exp_info.size)) {
			ret = -EINVAL;
			goto free_ent;
		}
	}

	ubuf->nr_pages = exp_info.size >> PAGE_SHIFT;