aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2016-03-21 10:30:28 -0300
committerBen Hutchings <ben@decadent.org.uk>2020-04-28 19:03:48 +0100
commitd4f640d3c8e585f0accf523515daaa303108a951 (patch)
tree37b3972677013035de1c8a0935056c6ef4f3c539
parentf533f163275873aa1f0b247db0fdc5cd452c5fa2 (diff)
downloadlinux-stable-d4f640d3c8e585f0accf523515daaa303108a951.tar.gz
drivers/media/media-devnode: clear private_data before put_device()
commit bf244f665d76d20312c80524689b32a752888838 upstream. Callbacks invoked from put_device() may free the struct media_devnode pointer, so any cleanup needs to be done before put_device(). Signed-off-by: Max Kellermann <max@duempel.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--drivers/media/media-devnode.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/media/media-devnode.c b/drivers/media/media-devnode.c
index a8cb52dc8c4ff9..6c56aebd8db0ff 100644
--- a/drivers/media/media-devnode.c
+++ b/drivers/media/media-devnode.c
@@ -197,10 +197,11 @@ static int media_release(struct inode *inode, struct file *filp)
if (mdev->fops->release)
mdev->fops->release(filp);
+ filp->private_data = NULL;
+
/* decrease the refcount unconditionally since the release()
return value is ignored. */
put_device(&mdev->dev);
- filp->private_data = NULL;
return 0;
}