media: em28xx: Don't use ops->resume if NULL
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 23 Apr 2018 11:02:39 +0000 (07:02 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 4 May 2018 12:59:02 +0000 (08:59 -0400)
Changeset  be7fd3c3a8c5 ("media: em28xx: Hauppauge DualHD
second tuner functionality") introduced a potential NULL pointer
dereference, as pointed by Coverity:

CID 1434731 (#1 of 1): Dereference after null check (FORWARD_NULL)16. var_deref_op: Dereferencing null pointer ops->resume.

var_compare_op: Comparing ops->resume to null implies that ops->resume might be null.
1174                if (ops->resume)
1175                        ops->resume(dev);
1176                if (dev->dev_next)
1177                        ops->resume(dev->dev_next);

Fixes: be7fd3c3a8c5 ("media: em28xx: Hauppauge DualHD second tuner functionality")
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/usb/em28xx/em28xx-core.c

index 36d341fb65dd298ca923c256d14757d1da88336e..0cefd29184f6b5dd5da05ff0b26e0fecd555f511 100644 (file)
@@ -1171,8 +1171,9 @@ int em28xx_resume_extension(struct em28xx *dev)
        dev_info(&dev->intf->dev, "Resuming extensions\n");
        mutex_lock(&em28xx_devlist_mutex);
        list_for_each_entry(ops, &em28xx_extension_devlist, next) {
-               if (ops->resume)
-                       ops->resume(dev);
+               if (!ops->resume)
+                       continue;
+               ops->resume(dev);
                if (dev->dev_next)
                        ops->resume(dev->dev_next);
        }