I don't think there are *that* many. I found only 83 instances of
"register_chrdev()" in the kernel, so the open methods should be pretty
limited.
Of course, some open methods call other sub-registrations, but you'd start
off by moving the lock_kernel() down just *one* stage.
So it literally should be:
- remove one lock_kernel/unlock_kernel pair in fs/char_dev.c
- add max 83 pairs in the places that register those things
- external modules will need to add it themselves some day.
I really don't think it's worth the pain. See above. The numbers aren't
that huge, and external modules simply aren't a pressing enough issue.
Linus
--