Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21a73397 authored by Cyril Roelandt's avatar Cyril Roelandt Committed by Mauro Carvalho Chehab
Browse files

[media] media: saa7146: don't use mutex_lock_interruptible() in device_release()

Use uninterruptible mutex_lock in the release() file op to make sure all
resources are properly freed when a process is being terminated. Returning
-ERESTARTSYS has no effect for a terminating process and this may cause driver
resources not to be released.
This was found using the following semantic patch (http://coccinelle.lip6.fr/

):
<spml>
@r@
identifier fops;
identifier release_func;
@@
static const struct v4l2_file_operations fops = {
.release = release_func
};
@depends on r@
identifier r.release_func;
expression E;
@@
static int release_func(...)
{
...
- if (mutex_lock_interruptible(E)) return -ERESTARTSYS;
+ mutex_lock(E);
...
}
</spml>

Signed-off-by: default avatarCyril Roelandt <tipecaml@gmail.com>
Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9d7005f9
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -265,8 +265,7 @@ static int fops_release(struct file *file)

	DEB_EE("file:%p\n", file);

	if (mutex_lock_interruptible(vdev->lock))
		return -ERESTARTSYS;
	mutex_lock(vdev->lock);

	if (vdev->vfl_type == VFL_TYPE_VBI) {
		if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)