Commit ed59bbe1 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab

media: v4l: async: Clean up error handling in v4l2_async_match_notify

Add labels for error handling instead of doing it all in individual cases.
Prepare for more functionality in this function.
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de> # imx6qp
Tested-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> # rcar + adv746x
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tested-by: Aishwarya Kothari <aishwarya.kothari@toradex.com> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> # Renesas RZ/G2L SMARC
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent adb2dcd5
...@@ -320,10 +320,8 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, ...@@ -320,10 +320,8 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier,
return ret; return ret;
ret = v4l2_async_nf_call_bound(notifier, sd, asc); ret = v4l2_async_nf_call_bound(notifier, sd, asc);
if (ret < 0) { if (ret < 0)
v4l2_device_unregister_subdev(sd); goto err_unregister_subdev;
return ret;
}
/* /*
* Depending of the function of the entities involved, we may want to * Depending of the function of the entities involved, we may want to
...@@ -332,11 +330,8 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, ...@@ -332,11 +330,8 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier,
* pad). * pad).
*/ */
ret = v4l2_async_create_ancillary_links(notifier, sd); ret = v4l2_async_create_ancillary_links(notifier, sd);
if (ret) { if (ret)
v4l2_async_nf_call_unbind(notifier, sd, asc); goto err_call_unbind;
v4l2_device_unregister_subdev(sd);
return ret;
}
list_del(&asc->waiting_entry); list_del(&asc->waiting_entry);
sd->asd = asc; sd->asd = asc;
...@@ -363,6 +358,14 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, ...@@ -363,6 +358,14 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier,
subdev_notifier->parent = notifier; subdev_notifier->parent = notifier;
return v4l2_async_nf_try_all_subdevs(subdev_notifier); return v4l2_async_nf_try_all_subdevs(subdev_notifier);
err_call_unbind:
v4l2_async_nf_call_unbind(notifier, sd, asc);
err_unregister_subdev:
v4l2_device_unregister_subdev(sd);
return ret;
} }
/* Test all async sub-devices in a notifier for a match. */ /* Test all async sub-devices in a notifier for a match. */
......
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