diff options
author | Lyude Paul <lyude@redhat.com> | 2018-07-12 19:02:52 +0200 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2018-07-16 10:06:29 +0200 |
commit | 922a8c82fafdec99688bbaea6c5889f562a42cdc (patch) | |
tree | 1b4d771662b7864bb355d010326868b5a4cb97c6 /drivers/gpu/drm/nouveau/nouveau_drm.c | |
parent | drm/nouveau/debugfs: Wake up GPU before doing any reclocking (diff) | |
download | linux-922a8c82fafdec99688bbaea6c5889f562a42cdc.tar.xz linux-922a8c82fafdec99688bbaea6c5889f562a42cdc.zip |
drm/nouveau: Fix runtime PM leak in drm_open()
Noticed this as I was skimming through, if we fail to allocate memory
for cli we'll end up returning without dropping the runtime PM ref we
got. Additionally, we'll even return the wrong return code! (ret most
likely will == 0 here, we want -ENOMEM).
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drm.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drm.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 775443c9af94..c779ee3c665b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -912,8 +912,10 @@ nouveau_drm_open(struct drm_device *dev, struct drm_file *fpriv) get_task_comm(tmpname, current); snprintf(name, sizeof(name), "%s[%d]", tmpname, pid_nr(fpriv->pid)); - if (!(cli = kzalloc(sizeof(*cli), GFP_KERNEL))) - return ret; + if (!(cli = kzalloc(sizeof(*cli), GFP_KERNEL))) { + ret = -ENOMEM; + goto done; + } ret = nouveau_cli_init(drm, name, cli); if (ret) |