diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2015-06-03 12:09:10 +0100 |
---|---|---|
committer | Sasha Levin <sasha.levin@oracle.com> | 2015-07-03 23:02:24 -0400 |
commit | 0879d31bac62f999aad65358e174a62d43694dd8 (patch) | |
tree | b4be221317b683065d5acd6cea43dcc631f69a5e /drivers/gpu | |
parent | d3808ea819469b6ab6f04cb198d60910646a4893 (diff) | |
download | lwn-0879d31bac62f999aad65358e174a62d43694dd8.tar.gz lwn-0879d31bac62f999aad65358e174a62d43694dd8.zip |
drm/qxl: Do not leak memory if qxl_release_list_add fails
[ Upstream commit 8451cc964c1d193b989c41a44e5e77109cc696f8 ]
If the function fails reference counter to the object is not decremented
causing leaks.
This is hard to spot as it happens only on very low memory situations.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Cc: stable@vger.kernel.org
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_ioctl.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c index b110883f8253..7354a4cda59d 100644 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c @@ -122,8 +122,10 @@ static struct qxl_bo *qxlhw_handle_to_bo(struct qxl_device *qdev, qobj = gem_to_qxl_bo(gobj); ret = qxl_release_list_add(release, qobj); - if (ret) + if (ret) { + drm_gem_object_unreference_unlocked(gobj); return NULL; + } return qobj; } |