From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans Verkuil Date: Tue, 11 Dec 2012 07:22:19 +0000 Subject: Re: [PATCH 1/1] media: saa7146: don't use mutex_lock_interruptible() in device_release(). Message-Id: <201212110822.19555.hverkuil@xs4all.nl> List-Id: References: <1355195128-10209-1-git-send-email-tipecaml@gmail.com> <1355195128-10209-2-git-send-email-tipecaml@gmail.com> In-Reply-To: <1355195128-10209-2-git-send-email-tipecaml@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Cyril Roelandt Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, michael@mihu.de, mchehab@redhat.com, linux-media@vger.kernel.org On Tue December 11 2012 04:05:28 Cyril Roelandt wrote: > 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. Acked-by: Hans Verkuil Thanks! Hans > This was found using the following semantic patch (http://coccinelle.lip6.fr/): > > > @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); > ... > } > > > Signed-off-by: Cyril Roelandt > --- > drivers/media/common/saa7146/saa7146_fops.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/media/common/saa7146/saa7146_fops.c b/drivers/media/common/saa7146/saa7146_fops.c > index b3890bd..0afe98d 100644 > --- a/drivers/media/common/saa7146/saa7146_fops.c > +++ b/drivers/media/common/saa7146/saa7146_fops.c > @@ -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) >