[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080527103755.1fd67ec1@bike.lwn.net>
Date: Tue, 27 May 2008 10:37:55 -0600
From: Jonathan Corbet <corbet@....net>
To: Mauro Carvalho Chehab <mchehab@...radead.org>
Cc: Alan Cox <alan@...hat.com>, video4linux-list@...hat.com,
linux-kernel@...r.kernel.org, Alan Cox <alan@...rguk.ukuu.org.uk>
Subject: Re: [PATCH] video4linux: Push down the BKL
On Tue, 27 May 2008 13:31:00 -0300
Mauro Carvalho Chehab <mchehab@...radead.org> wrote:
> Since the other methods don't explicitly call BKL (and, AFAIK, kernel
> open handler don't call it neither), if a program 1 is opening a
> device and initializing some data, and a program 2 starts doing
> ioctl, interrupting program 1 execution in the middle of a data
> initialization procedure, you may have a race condition, since some
> devices initialize some device global data during open [1].
In fact, 2.6.26 and prior kernels *do* acquire the BKL on open (for
char devices) - that's the behavior that the bkl-removal tree is there
to do away with. So, for example, I've pushed that acquisition down
into video_open() instead.
So, for now, open() is serialized against ioctl() in video drivers. As
soon as you take the BKL out of ioctl(), though, that won't happen,
unless the mutex you use is also acquired in the open path.
jon
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists