]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: dvbdev: drop refcount on error path in dvb_device_open()
authorDan Carpenter <dan.carpenter@linaro.org>
Tue, 31 Oct 2023 09:53:33 +0000 (12:53 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 22:52:43 +0000 (14:52 -0800)
[ Upstream commit a2dd235df435a05d389240be748909ada91201d2 ]

If call to file->f_op->open() fails, then call dvb_device_put(dvbdev).

Fixes: 0fc044b2b5e2 ("media: dvbdev: adopts refcnt to avoid UAF")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/dvb-core/dvbdev.c

index 2ff8a1b776fb4a1b741c81a70a92cd2fc90631ea..3a83e8e0925685c215814c7c20f75f5a880a4869 100644 (file)
@@ -114,6 +114,8 @@ static int dvb_device_open(struct inode *inode, struct file *file)
                        err = file->f_op->open(inode, file);
                up_read(&minor_rwsem);
                mutex_unlock(&dvbdev_mutex);
+               if (err)
+                       dvb_device_put(dvbdev);
                return err;
        }
 fail: