mirror of https://github.com/torvalds/linux.git
- Fix panic structure allocation memory leak (Jani)
-----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEbSBwaO7dZQkcLOKj+mJfZA7rE8oFAmj6I2AACgkQ+mJfZA7r E8qykQf9HoJq6rEFWhGE9QcI/lkxa8fquz7D7gjm3BIQBvWlcaLyGy9rF2pmw9VB p+vyDpI+xaDhwn9tTrMTkghM3dw6pQhfeTsbX/ll2T9ErooSfwso4ErX1hsl2za5 u1AvgpXARlt3fHbUYQPye/4JWWpoRPXpP2G8juz/Tcgh+2bvRg0iteTtH5eauZlh /qia9ZTpZokQTsw0aA01tdklNvSfc1zfE+SdrOYxSu29sS87IK7xyqAAfxZZglMR Ms9bXOy829odd9Gb3D649OtMcT1IhcMnAJcAt1lJcmiZRN2fNn0HL6mk5R/bpc8s GQJ4LbOH0zNAQgBvYwCPLHFVfNkOBQ== =EbYt -----END PGP SIGNATURE----- Merge tag 'drm-intel-fixes-2025-10-23' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-fixes - Fix panic structure allocation memory leak (Jani) Signed-off-by: Simona Vetter <simona.vetter@ffwll.ch> From: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://lore.kernel.org/r/aPojgsvNYOU0tN4U@intel.com
This commit is contained in:
commit
adb0971a1a
|
|
@ -2117,6 +2117,7 @@ static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb)
|
||||||
|
|
||||||
intel_frontbuffer_put(intel_fb->frontbuffer);
|
intel_frontbuffer_put(intel_fb->frontbuffer);
|
||||||
|
|
||||||
|
kfree(intel_fb->panic);
|
||||||
kfree(intel_fb);
|
kfree(intel_fb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2215,16 +2216,22 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
|
||||||
struct intel_display *display = to_intel_display(obj->dev);
|
struct intel_display *display = to_intel_display(obj->dev);
|
||||||
struct drm_framebuffer *fb = &intel_fb->base;
|
struct drm_framebuffer *fb = &intel_fb->base;
|
||||||
u32 max_stride;
|
u32 max_stride;
|
||||||
int ret = -EINVAL;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
intel_fb->panic = intel_panic_alloc();
|
||||||
|
if (!intel_fb->panic)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* intel_frontbuffer_get() must be done before
|
* intel_frontbuffer_get() must be done before
|
||||||
* intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
|
* intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
|
||||||
*/
|
*/
|
||||||
intel_fb->frontbuffer = intel_frontbuffer_get(obj);
|
intel_fb->frontbuffer = intel_frontbuffer_get(obj);
|
||||||
if (!intel_fb->frontbuffer)
|
if (!intel_fb->frontbuffer) {
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto err_free_panic;
|
||||||
|
}
|
||||||
|
|
||||||
ret = intel_fb_bo_framebuffer_init(fb, obj, mode_cmd);
|
ret = intel_fb_bo_framebuffer_init(fb, obj, mode_cmd);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
@ -2323,6 +2330,9 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
|
||||||
intel_fb_bo_framebuffer_fini(obj);
|
intel_fb_bo_framebuffer_fini(obj);
|
||||||
err_frontbuffer_put:
|
err_frontbuffer_put:
|
||||||
intel_frontbuffer_put(intel_fb->frontbuffer);
|
intel_frontbuffer_put(intel_fb->frontbuffer);
|
||||||
|
err_free_panic:
|
||||||
|
kfree(intel_fb->panic);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2349,20 +2359,11 @@ intel_user_framebuffer_create(struct drm_device *dev,
|
||||||
struct intel_framebuffer *intel_framebuffer_alloc(void)
|
struct intel_framebuffer *intel_framebuffer_alloc(void)
|
||||||
{
|
{
|
||||||
struct intel_framebuffer *intel_fb;
|
struct intel_framebuffer *intel_fb;
|
||||||
struct intel_panic *panic;
|
|
||||||
|
|
||||||
intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
|
intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
|
||||||
if (!intel_fb)
|
if (!intel_fb)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
panic = intel_panic_alloc();
|
|
||||||
if (!panic) {
|
|
||||||
kfree(intel_fb);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
intel_fb->panic = panic;
|
|
||||||
|
|
||||||
return intel_fb;
|
return intel_fb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue