]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm: Account property blob allocations to memcg
authorXiao Kan <814091656@qq.com>
Wed, 14 Jan 2026 13:22:26 +0000 (08:22 -0500)
committerMaxime Ripard <mripard@kernel.org>
Fri, 16 Jan 2026 10:22:03 +0000 (11:22 +0100)
DRM_IOCTL_MODE_CREATEPROPBLOB allows userspace to allocate arbitrary-sized
property blobs backed by kernel memory.

Currently, the blob data allocation is not accounted to the allocating
process's memory cgroup, allowing unprivileged users to trigger unbounded
kernel memory consumption and potentially cause system-wide OOM.

Mark the property blob data allocation with GFP_KERNEL_ACCOUNT so that the memory
is properly charged to the caller's memcg. This ensures existing cgroup
memory limits apply and prevents uncontrolled kernel memory growth without
introducing additional policy or per-file limits.

Signed-off-by: Xiao Kan <814091656@qq.com>
Signed-off-by: Xiao Kan <xiao.kan@samsung.com>
Link: https://patch.msgid.link/tencent_D12AA2DEDE6F359E1AF59405242FB7A5FD05@qq.com
Signed-off-by: Maxime Ripard <mripard@kernel.org>
drivers/gpu/drm/drm_property.c

index 955fa960843b3a1a8c603cbeeca00ed05686b6d8..540cd41d8368fca531030b7f71558e2129bfe48e 100644 (file)
@@ -562,7 +562,7 @@ drm_property_create_blob(struct drm_device *dev, size_t length,
        if (!length || length > INT_MAX - sizeof(struct drm_property_blob))
                return ERR_PTR(-EINVAL);
 
-       blob = kvzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL);
+       blob = kvzalloc(sizeof(struct drm_property_blob) + length, GFP_KERNEL_ACCOUNT);
        if (!blob)
                return ERR_PTR(-ENOMEM);