]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/tegra: put drm_gem_object ref on error in tegra_fb_create
authorFedor Pchelkin <pchelkin@ispras.ru>
Fri, 15 Dec 2023 09:33:55 +0000 (12:33 +0300)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:21:58 +0000 (18:21 -0400)
[ Upstream commit 32e5a120a5105bce01561978ee55aee8e40ac0dc ]

Inside tegra_fb_create(), drm_gem_object_lookup() increments ref count of
the found object. But if the following size check fails then the last
found object's ref count should be put there as the unreferencing loop
can't detect this situation.

Found by Linux Verification Center (linuxtesting.org).

Fixes: de2ba664c30f ("gpu: host1x: drm: Add memory manager and fb")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231215093356.12067-1-pchelkin@ispras.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/tegra/fb.c

index 01939c57fc74d5b13e0ea259c28e7fb849d91659..2040dbfed7e21aa02126b941d8b43bc2c08f6d3a 100644 (file)
@@ -155,6 +155,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
 
                if (gem->size < size) {
                        err = -EINVAL;
+                       drm_gem_object_put(gem);
                        goto unreference;
                }