summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@s-opensource.com>2017-10-31 14:18:03 -0400
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2017-11-01 05:10:36 -0400
commit1acce5f72cfabcafee5e101b9ac7d71ebe1c7af9 (patch)
treea499e2bdb32546cb96015b4f6bce8d8be1023225
parentceb3c45b43ffd69220233e309f0f6f0a9d3125a6 (diff)
downloadlinux-1acce5f72cfabcafee5e101b9ac7d71ebe1c7af9.tar.bz2
media: v4l2-fwnode: use the cached value instead of getting again
There is a get/put operation in order to get firmware is_available data there at the __v4l2_async_notifier_parse_fwnode_endpoints() function. However, instead of using it, the code just reads again without the lock. That's a bug, as dev_fwnode isn't guaranteed to be there once fwnode_handle_put() has been called on it. This solves this smatch warning: drivers/media/v4l2-core/v4l2-fwnode.c:453:8: warning: variable 'is_available' set but not used [-Wunused-but-set-variable] bool is_available; ^~~~~~~~~~~~ Fixes: 9ca465312132 ("media: v4l: fwnode: Support generic parsing of graph endpoints in a device") Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r--drivers/media/v4l2-core/v4l2-fwnode.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
index 3b9c6afb49a3..681b192420d9 100644
--- a/drivers/media/v4l2-core/v4l2-fwnode.c
+++ b/drivers/media/v4l2-core/v4l2-fwnode.c
@@ -455,8 +455,7 @@ static int __v4l2_async_notifier_parse_fwnode_endpoints(
dev_fwnode = fwnode_graph_get_port_parent(fwnode);
is_available = fwnode_device_is_available(dev_fwnode);
fwnode_handle_put(dev_fwnode);
-
- if (!fwnode_device_is_available(dev_fwnode))
+ if (!is_available)
continue;
if (WARN_ON(notifier->num_subdevs >= notifier->max_subdevs)) {