Properly check that a notifier was never initialised or register. This can now be done by looking at the entry in the notifier list, not the V4L2 device or sub-device that are set in the initialiser now. Fixes: b8ec754ae4c5 ("media: v4l: async: Set v4l2_device and subdev in async notifier init") Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> --- drivers/media/v4l2-core/v4l2-async.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 2ff35d5d60f2..3b43d6285dfe 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -630,12 +630,14 @@ EXPORT_SYMBOL(v4l2_async_nf_register); static void __v4l2_async_nf_unregister(struct v4l2_async_notifier *notifier) { - if (!notifier || (!notifier->v4l2_dev && !notifier->sd)) + /* Return here if the notifier is never initialised or registered. */ + if (!notifier->notifier_entry.next || + list_empty(¬ifier->notifier_entry)) return; v4l2_async_nf_unbind_all_subdevs(notifier); - list_del(¬ifier->notifier_entry); + list_del_init(¬ifier->notifier_entry); } void v4l2_async_nf_unregister(struct v4l2_async_notifier *notifier) -- 2.39.2