On Tue, 2005-07-12 at 16:08 +0200, Mateusz Berezecki wrote:
> Sorry for not being too precise. Yes, your assumptions were correct ;-)
> I grab a lock using
>
> spin_lock(&ieee->lock);
>
> and release it using
>
> spin_unlock(&ieee->lock);
>
> there is quite a lot of debugging printk's inbetween. Can this be a cause ?
>
No.
You previous showed the following output:
scheduling while atomic: insmod/0x00000001/12692
[<c03e7352>] schedule+0x632/0x640
[<c0119bb1>] __wake_up_common+0x41/0x70
[<c03e74df>] wait_for_completion+0x8f/0xf0
[<c0119b50>] default_wake_function+0x0/0x20
[<c0119b50>] default_wake_function+0x0/0x20
[<c012e2dd>] queue_work+0x8d/0xa0
[<c012e070>] __call_usermodehelper+0x0/0x70
[<c012e1a5>] call_usermodehelper_keys+0xc5/0xd0
[<c012e070>] __call_usermodehelper+0x0/0x70
[<c020c028>] sprintf+0x28/0x30
[<c020955d>] kobject_hotplug+0x29d/0x310
[<c019fc6e>] sysfs_create_link+0x3e/0x60
[<c028b601>] class_device_add+0x161/0x1e0
[<c036f38e>] netdev_register_sysfs+0x3e/0x100
[<c03650db>] netdev_run_todo+0x1eb/0x220
[<c0364dce>] register_netdev+0x5e/0x90
I assume that you call register_netdev in your module. Since this was
running insmod, this is probably called from the module_init. So what
reason do you have a lock from beginning to end? Looking at this, you
can't call register_netdev while holding a spin_lock since it looks like
it will schedule. So the fix is to release whatever spin lock that you
have before calling register_netdev.
-- Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|