[PATCH 4.17 23/56] drm: Use kvzalloc for allocating blob property memory

From: Greg Kroah-Hartman
Date: Tue Jul 10 2018 - 14:35:07 EST


4.17-stable review patch. If anyone has any objections, please let me know.

------------------

From: Michel DÃnzer <michel.daenzer@xxxxxxx>

commit 718b5406cd76f1aa6434311241b7febf0e8571ff upstream.

The property size may be controlled by userspace, can be large (I've
seen failure with order 4, i.e. 16 pages / 64 KB) and doesn't need to be
physically contiguous.

Signed-off-by: Michel DÃnzer <michel.daenzer@xxxxxxx>
Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx>
Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
Link: https://patchwork.freedesktop.org/patch/msgid/20180629142710.2069-1-michel@xxxxxxxxxxx
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
drivers/gpu/drm/drm_property.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/gpu/drm/drm_property.c
+++ b/drivers/gpu/drm/drm_property.c
@@ -533,7 +533,7 @@ static void drm_property_free_blob(struc

drm_mode_object_unregister(blob->dev, &blob->base);

- kfree(blob);
+ kvfree(blob);
}

/**
@@ -560,7 +560,7 @@ drm_property_create_blob(struct drm_devi
if (!length || length > ULONG_MAX - sizeof(struct drm_property_blob))
return ERR_PTR(-EINVAL);

- blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL);
+ blob = kvzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL);
if (!blob)
return ERR_PTR(-ENOMEM);

@@ -577,7 +577,7 @@ drm_property_create_blob(struct drm_devi
ret = __drm_mode_object_add(dev, &blob->base, DRM_MODE_OBJECT_BLOB,
true, drm_property_free_blob);
if (ret) {
- kfree(blob);
+ kvfree(blob);
return ERR_PTR(-EINVAL);
}