Commit 9879c9d3 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: v4l2-fwnode: simplify v4l2_fwnode_reference_parse_int_props()

The logic at v4l2_fwnode_reference_parse_int_props() is somewhat
complex and violates Linux coding style, as it does multiple
statements on a single line. That makes static analyzers to
be confused, as warned by smatch:

	drivers/media/v4l2-core/v4l2-fwnode.c:832 v4l2_fwnode_reference_parse_int_props() warn: passing zero to 'PTR_ERR'

Simplify the logic, in order to make clearer about what happens
when v4l2_fwnode_reference_get_int_prop() returns an error.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 76d81243
...@@ -819,17 +819,25 @@ static int v4l2_fwnode_reference_parse_int_props( ...@@ -819,17 +819,25 @@ static int v4l2_fwnode_reference_parse_int_props(
unsigned int index; unsigned int index;
int ret; int ret;
for (index = 0; !IS_ERR((fwnode = v4l2_fwnode_reference_get_int_prop( index = 0;
dev_fwnode(dev), prop, index, props, do {
nprops))); index++) fwnode = v4l2_fwnode_reference_get_int_prop(dev_fwnode(dev),
prop, index,
props, nprops);
if (IS_ERR(fwnode)) {
/*
* Note that right now both -ENODATA and -ENOENT may
* signal out-of-bounds access. Return the error in
* cases other than that.
*/
if (PTR_ERR(fwnode) != -ENOENT &&
PTR_ERR(fwnode) != -ENODATA)
return PTR_ERR(fwnode);
break;
}
fwnode_handle_put(fwnode); fwnode_handle_put(fwnode);
index++;
/* } while (1);
* Note that right now both -ENODATA and -ENOENT may signal
* out-of-bounds access. Return the error in cases other than that.
*/
if (PTR_ERR(fwnode) != -ENOENT && PTR_ERR(fwnode) != -ENODATA)
return PTR_ERR(fwnode);
ret = v4l2_async_notifier_realloc(notifier, ret = v4l2_async_notifier_realloc(notifier,
notifier->num_subdevs + index); notifier->num_subdevs + index);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment