Re: [PATCH] video4linux: Push down the BKL

From: Jonathan Corbet
Date: Tue May 27 2008 - 12:38:33 EST


On Tue, 27 May 2008 13:31:00 -0300
Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/