tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Module and device configuration locking [was Re: Modules loading modules?]

On Thu, 5 Aug 2010, Paul Goyette wrote:

Attached is the latest version of this change. For simplicity, I have broken the patches up into five separate groups:

Part 1 defines a set of new kernel locking primitives in file
kern/kern_lock.c to implement the recursive kernconfig_mutex. (I'm not really stuck on the name, so open to alternative suggestions!) All of the locking in sys/kern_module.c has been updated to use this instead of the internal module_lock mutex. Additionally, the module_autoload() routine now does its own locking, rather than requiring its caller to do it. And the description of locking in the module(9) man page is updated.

Part 2 removes all of the explicit module_{,un}lock() calls from the various xxx_verbose modules that I'd previous worked on.

Part 3 removes all of the explicit module_{,un}lock() calls from other bits and pieces of the kernel. In a couple of places, new calls to
kernconfig_{,un}lock() are inserted.

Part 4 updates rump to provide equivalent locking routines. (pooka, I would appreciate you looking at this.)

Part 5 adds a new atf test-case to the existing module tests to verify that recursion actually works!

I should add that I'm actually running with these changes on one of my local machines with no visible problems, and the above-added test case works.

The machine has a "AMD Phenom(tm) 9600 Quad-Core Processor" at 2.3MHz.

{103} modstat
NAME             CLASS      SOURCE     REFS  SIZE     REQUIRES
bpf              driver     builtin    0     -        -
compat           misc       builtin    0     -        -
coredump         misc       filesys    1     3402     -
exec_elf64       misc       filesys    0     7960     coredump
exec_script      misc       filesys    0     1256     -
ffs              vfs        boot       0     153316   -
kernfs           vfs        filesys    0     12914    -
nfs              vfs        filesys    0     159471   -
ptyfs            vfs        filesys    0     10118    -
secmodel_bsd44   secmodel   builtin    0     -        suser,securelevel
securelevel      secmodel   builtin    1     -        -
suser            secmodel   builtin    1     -        -
tmpfs            vfs        filesys    0     19513    -
wapbl            vfs        builtin    0     -        -

| Paul Goyette     | PGP Key fingerprint:     | E-mail addresses:       |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul at    |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette at |
| Kernel Developer |                          | pgoyette at  |

Home | Main Index | Thread Index | Old Index