Messages in this thread | | | Date | Tue, 27 May 2008 10:37:55 -0600 | From | Jonathan Corbet <> | Subject | Re: [PATCH] video4linux: Push down the BKL |
| |
On Tue, 27 May 2008 13:31:00 -0300 Mauro Carvalho Chehab <mchehab@infradead.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
| |