Larry Finger wrote: > Alan Jenkins wrote: >> On 4/8/09, Larry Finger <Larry.Finger@xxxxxxxxxxxx> wrote: >> >> Something is very wrong with request_module(), this is just the most >> obvious symptom. It also seems to affect libusual (loading >> usb-storage) and FAT (loading NLS modules). >> >> If I hotplug my wireless device, it then loads correctly. So I'm >> guessing wireless modules e.g. encryption modules get loaded too >> asynchronously. I.e. on boot, the sub-modules are loaded too late. >> But when I hotplug the device, the modules are already loaded. >> >> Same with FAT - it fails on first attempt to mount because of missing >> NLS module, then works on second mount, >> >> I agree that commit looks like it should be a no-op though :-). >> I will try to confirm the OP's bisection by reverting the commit, acae0515. > > I added printk's to the entry and exit from __request_module and obtained the > following: > > module: __request_module entered for module snd-hda-codec-id:14f15051 > module: loading module snd-hda-codec-id:14f15051 - call_usermodehelper returned 0 > module: __request_module entered for module ecb(arc4) > module: loading module ecb(arc4) - call_usermodehelper returned 256 > module: __request_module entered for module ecb > module: loading module ecb - call_usermodehelper returned 0 > module: __request_module entered for module char-major-4-68 > module: loading module char-major-4-68 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4 > module: loading module char-major-4 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4-69 > module: loading module char-major-4-69 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4 > module: loading module char-major-4 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4-70 > module: loading module char-major-4-70 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4 > module: loading module char-major-4 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4-71 > module: loading module char-major-4-71 - call_usermodehelper returned 256 > module: __request_module entered for module char-major-4 > module: loading module char-major-4 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > module: __request_module entered for module net-pf-10 > module: loading module net-pf-10 - call_usermodehelper returned 256 > > According to the description of the routine, it should return 0 on success and a > negative number for an error. Where do the values of "256" mean? Here's a quick explanation (Linus explained this to me 6-8 years ago; I bet his was better than mine, but I can't find his). 256 = 0x0100 Inside the kernel, a program's exit code/status is split into 2 8-bit fields, so this exit status is (0x01, 0x00). The low 8 bits (0x00 in this example) store an internal code for why the program is exiting (or did exit). E.g.: 0xlow_7_bits = 0 => exited, exit status is in "high" 8 bits else 0x80 bit set => core dumped, else killed, with exit status in low 7 bits So it looks like /sbin/modprobe exited with an exit status of 1... whatever that means (fatal error or usage() printed or module not found). See kernel/[signal.c & exit.c] for uses of 0x80... HTH. -- ~Randy -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html