Mind adding the proper Fixes: tags and Cc: tags here? On Mon, 2026-08-24 at 17:05 +0800, liupeng wrote: > In nouveau_debugfs_init(), if nvif_object_ctor() fails, the > previously > allocated drm->debugfs is leaked because the function returns the > error code directly. > > In nouveau_hwmon_init(), if hwmon_device_register_with_info() fails, > the allocated hwmon structure is leaked because the function returns > the error code directly. > > Fix both by freeing the allocated memory and clearing the pointer on > the error paths. > > Signed-off-by: liupeng <[email protected]> > --- > drivers/gpu/drm/nouveau/nouveau_debugfs.c | 15 ++++++++++++--- > drivers/gpu/drm/nouveau/nouveau_hwmon.c | 2 ++ > 2 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c > b/drivers/gpu/drm/nouveau/nouveau_debugfs.c > index 47d5579c568d..88223931f382 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c > +++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c > @@ -295,13 +295,22 @@ nouveau_drm_debugfs_init(struct drm_minor > *minor) > int > nouveau_debugfs_init(struct nouveau_drm *drm) > { > + int ret; > + > drm->debugfs = kzalloc_obj(*drm->debugfs); > if (!drm->debugfs) > return -ENOMEM; > > - return nvif_object_ctor(&drm->client.device.object, > "debugfsCtrl", 0, > - NVIF_CLASS_CONTROL, NULL, 0, > - &drm->debugfs->ctrl); > + ret = nvif_object_ctor(&drm->client.device.object, > "debugfsCtrl", 0, > + NVIF_CLASS_CONTROL, NULL, 0, > + &drm->debugfs->ctrl); > + if (ret) { > + kfree(drm->debugfs); > + drm->debugfs = NULL; > + return ret; > + } > + > + return 0; > } > > void > diff --git a/drivers/gpu/drm/nouveau/nouveau_hwmon.c > b/drivers/gpu/drm/nouveau/nouveau_hwmon.c > index 726397ab035d..ffbe7f542ab0 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_hwmon.c > +++ b/drivers/gpu/drm/nouveau/nouveau_hwmon.c > @@ -697,6 +697,8 @@ nouveau_hwmon_init(struct drm_device *dev) > if (IS_ERR(hwmon_dev)) { > ret = PTR_ERR(hwmon_dev); > NV_ERROR(drm, "Unable to register hwmon device: > %d\n", ret); > + drm->hwmon = NULL; > + kfree(hwmon); > return ret; > } >
