dmxdev: don't use before checking file->private_data 34/27934/2
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Wed, 3 Sep 2014 17:32:26 +0000 (14:32 -0300)
committerSylwester Nawrocki <s.nawrocki@samsung.com>
Fri, 28 Nov 2014 15:49:19 +0000 (07:49 -0800)
As reported by smatch:
drivers/media/dvb-core/dmxdev.c:1091 dvb_demux_poll() warn: variable dereferenced before check 'dmxdevfilter' (see line 1088)

This was introduced by changeset d102cac8097c.

We need to test before using it.

Change-Id: I4e51d508c466b915338bd0a88a7afb49f4dbeb4d
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Signed-off-by: Changbing Xiong <cb.xiong@samsung.com>
drivers/media/dvb-core/dmxdev.c

index 42b5e70..abff803 100644 (file)
@@ -1085,10 +1085,9 @@ static long dvb_demux_ioctl(struct file *file, unsigned int cmd,
 static unsigned int dvb_demux_poll(struct file *file, poll_table *wait)
 {
        struct dmxdev_filter *dmxdevfilter = file->private_data;
-       struct dmxdev *dmxdev = dmxdevfilter->dev;
        unsigned int mask = 0;
 
-       if ((!dmxdevfilter) || (dmxdev->exit))
+       if ((!dmxdevfilter) || dmxdevfilter->dev->exit)
                return POLLERR;
 
        poll_wait(file, &dmxdevfilter->buffer.queue, wait);