Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

1.53 race condition with udevd

Help
Bryson Lee
2008-11-27
2012-10-06
  • Bryson Lee
    Bryson Lee
    2008-11-27

    I just upgraded my x86_64 laptop (HP Pavillion DV6000, FWIW) to Fedora 10 from Fedora 8, where I had ndiswrapper 1.53 working. After the upgrade, I found messages of the following form in /var/log/messages:

    Nov 26 13:44:11 alois kernel: ndiswrapper version 1.53 loaded (smp=yes, preempt=no)
    Nov 26 13:44:11 alois kernel: ioctl32(loadndisdriver:1973): Unknown cmd fd(0) cmd(40056e00){t:'n';sz:5} arg(ffe1f198) on /dev/ndiswrapper (deleted)
    ...
    Nov 26 13:44:11 alois kernel: usbcore: registered new interface driver ndiswrapper

    I think I've traced this back to a race condition between udev and the ndiswrapper.ko <--> loadndiswrapper interaction at module-load time. What appears to be happening is that when the module loads and registers it's device-file settings, udev tries to mknod a corresponding device called "/dev/ndiswrapper" at the same time that the module is invoking loadndiswrapper. Looking at the loadndiswrapper source, it also mknod's /dev/ndiswrapper and unlinks it.

    I built a modified loadndiswrapper that uses /tmp/ndiswrapper as the device name and substituted it into /sbin on my system; the module loaded successfully and initialized my wireless adapter.

    This could certainly be a configuration problem specific to Fedora 10, but it looks to me as if it could potentially affect any system using a "dynamic" /dev directory.