@@ -480,15 +485,19 @@ int fwnode_property_get_reference_args(const
struct fwnode_handle *fwnode,
{
int ret;
+ if (IS_ERR_OR_NULL(fwnode))
+ return -ENOENT;
+
ret = fwnode_call_int_op(fwnode, get_reference_args, prop,
nargs_prop,
nargs, index, args);
+ if (ret == 0)
+ return ret;
- if (ret < 0 && !IS_ERR_OR_NULL(fwnode) &&
- !IS_ERR_OR_NULL(fwnode->secondary))
- ret = fwnode_call_int_op(fwnode->secondary, get_reference_args,
- prop, nargs_prop, nargs, index, args);
+ if (IS_ERR_OR_NULL(fwnode->secondary))
+ return -ENOENT;
Doesn't this mean you overwrite any return code != 0 with -ENOENT?
Is this intended?
In any case:
Tested-by: Michael Walle <michael@xxxxxxxx>
-michael