Linux Media Controller development
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Sander Eikelenboom <linux@eikelenboom.it>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	linux-media@vger.kernel.org, hans.verkuil@cisco.com
Subject: Re: [ 3960.758784] 1 lock held by motion/7776: [ 3960.758788]  #0:  (&queue->mutex){......}, at: [<ffffffff815c62d2>] uvc_queue_enable+0x32/0xc0
Date: Mon, 07 May 2012 13:47:45 +0200	[thread overview]
Message-ID: <190915616.lpsK6E9b1z@avalon> (raw)
In-Reply-To: <201205071344.59861.hverkuil@xs4all.nl>

Hi Hans,

On Monday 07 May 2012 13:44:59 Hans Verkuil wrote:
> On Monday 07 May 2012 13:06:01 Laurent Pinchart wrote:
> > On Sunday 06 May 2012 16:54:40 Sander Eikelenboom wrote:
> > > Hello Laurent / Mauro,
> > > 
> > > I have updated to latest 3.4-rc5-tip, running multiple video grabbers.
> > > I don't see anything specific to uvcvideo anymore, but i do get the
> > > possible circular locking dependency below.
> > 
> > Thanks for the report.
> > 
> > We indeed have a serious issue there (CC'ing Hans Verkuil).
> > 
> > Hans, serializing both ioctl handling an mmap with a single device lock as
> > we currently do in V4L2 is prone to AB-BA deadlocks (uvcvideo shouldn't
> > be affected as it has no device-wide lock).
> > 
> > If we want to keep a device-wide lock we need to take it after the mm-
> > 
> > >mmap_sem lock in all code paths, as there's no way we can change the lock
> > 
> > ordering for mmap(). The copy_from_user/copy_to_user issue could be solved
> > by moving locking from v4l2_ioctl to __video_do_ioctl (device-wide locks
> > would then require using video_ioctl2), but I'm not sure whether that
> > will play nicely with the QBUF implementation in videobuf2 (which already
> > includes a workaround for this particular AB-BA deadlock issue).
> 
> I've seen the same thing. It was on my TODO list of things to look into. I
> think mmap shouldn't take the device wide lock at all. But it will mean
> reviewing affected drivers before I can remove it.
> 
> To be honest, I wasn't sure whether or not to take the device lock for mmap
> when I first wrote that code.
>
> If you look at irc I had a discussion today with HdG about adding flags to
> selectively disable locks for fops. It may be an idea to implement this soon
> so we can start updating drivers one-by-one.
> 
> Frankly, I do not believe this 'possible circular locking' thing to be a
> real bug as I am not aware of drivers that use the device lock *and* lock
> mmap_sem. If I understand Sander correctly 'motion' no longer locks up
> after moving to 3.4-rc5-tip, right?

copy_from_user()/copy_to_user() perform a down_read(&mm->mmap_sem) when a page 
fault occurs. All drivers thus potentially take mm->mmap_sem when an ioctl is 
performed.
 
> I have to look into a bit more to see what the best approach it so we can
> prevent this message from appearing.

-- 
Regards,

Laurent Pinchart


  reply	other threads:[~2012-05-07 11:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-28 20:02 [ 3960.758784] 1 lock held by motion/7776: [ 3960.758788] #0: (&queue->mutex){......}, at: [<ffffffff815c62d2>] uvc_queue_enable+0x32/0xc0 Sander Eikelenboom
2012-04-29 23:05 ` Laurent Pinchart
2012-05-06 14:54   ` Sander Eikelenboom
2012-05-07 11:06     ` Laurent Pinchart
2012-05-07 11:44       ` Hans Verkuil
2012-05-07 11:47         ` Laurent Pinchart [this message]
2012-05-07 11:52           ` Hans Verkuil
2012-05-07 13:28         ` Hans de Goede
2012-06-27 21:15           ` Sander Eikelenboom

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=190915616.lpsK6E9b1z@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hans.verkuil@cisco.com \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-media@vger.kernel.org \
    --cc=linux@eikelenboom.it \
    --cc=mchehab@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox