...
Really? .open() has been changed to be called without the BKL held, but
.ioctl() is still called with BKL protection. Currently, many .ioctl()
implementations are replaced by .unlocked_ioctl() which take the BKL
themselves if necessary or if it is not yet clear whether they would
work without BKL protection.
...
This should be audited for the following aspects:
- Could there be a race condition between irctl_open() and
lirc_dev_init()? If yes, try to rework them to eliminate the race,
or as a last resort take the BKL in irctl_open().
- Does irctl_ioctl() require BKL protection, i.e. does it have to be
serialized against itself and against irctl_open()? If not, replace
it by .unlocked_ioctl. If yes, preferably convert it to
.unlocked_ioctl too and add a local mutex for the necessary
serialization.
(Added Cc: Jonathan Corbet to correct me if I'm wrong.)
--
Stefan Richter
-=====-==--- =--= -=--=
http://arcgraph.de/sr/
--