]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/plane: Fix create_in_format_blob() return value
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 12 Nov 2025 23:30:28 +0000 (01:30 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 19 Nov 2025 17:37:04 +0000 (19:37 +0200)
create_in_format_blob() is either supposed to return a valid
pointer or an error, but never NULL. The caller will dereference
the blob when it is not an error, and thus will oops if NULL
returned. Return proper error values in the failure cases.

Cc: stable@vger.kernel.org
Cc: Arun R Murthy <arun.r.murthy@intel.com>
Fixes: 0d6dcd741c26 ("drm/plane: modify create_in_formats to acommodate async")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251112233030.24117-2-ville.syrjala@linux.intel.com
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
drivers/gpu/drm/drm_plane.c

index 38f82391bfda578d532499585066dd85ff573910..a30493ed97157fac03731775c9d12b3670469862 100644 (file)
@@ -210,7 +210,7 @@ static struct drm_property_blob *create_in_format_blob(struct drm_device *dev,
        formats_size = sizeof(__u32) * plane->format_count;
        if (WARN_ON(!formats_size)) {
                /* 0 formats are never expected */
-               return 0;
+               return ERR_PTR(-EINVAL);
        }
 
        modifiers_size =
@@ -226,7 +226,7 @@ static struct drm_property_blob *create_in_format_blob(struct drm_device *dev,
 
        blob = drm_property_create_blob(dev, blob_size, NULL);
        if (IS_ERR(blob))
-               return NULL;
+               return blob;
 
        blob_data = blob->data;
        blob_data->version = FORMAT_BLOB_CURRENT;