[media] v4l: async: Make it safe to unregister unregistered notifier

Calling v4l2_async_notifier_unregister() on a notifier that hasn't been
registered leads to a crash. To simplify drivers, make it safe to
unregister a notifier that has not been registered.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
Laurent Pinchart 2013-07-03 07:49:06 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель 3f359a7cb1
Коммит 8e3fbfee23
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -192,6 +192,9 @@ void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier)
struct device *dev[n_subdev]; struct device *dev[n_subdev];
int i = 0; int i = 0;
if (!notifier->v4l2_dev)
return;
mutex_lock(&list_lock); mutex_lock(&list_lock);
list_del(&notifier->list); list_del(&notifier->list);
@ -225,6 +228,9 @@ void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier)
} }
put_device(d); put_device(d);
} }
notifier->v4l2_dev = NULL;
/* /*
* Don't care about the waiting list, it is initialised and populated * Don't care about the waiting list, it is initialised and populated
* upon notifier registration. * upon notifier registration.