BUG: scheduling while atomic: rmmod
Commit 7f32f2e8d97150ba5b80410dda86b01b0879fe8d (batman-adv: use rcu callbacks when freeing batman_if) introduces this bug and is still valid on current head of master branch (6336988932cae06a632f1534b6dbf4106acfc178).
I could trigger this with two VMs (126.96.36.199) connected with each other. The call trace appears when removing the module again.
[ 2517.041002] batman_adv: B.A.T.M.A.N. advanced devel (compatibility version 12) loaded [ 2517.344410] batman_adv: bat0: Adding interface: eth1 [ 2517.346528] batman_adv: bat0: The MTU of interface eth1 is too small (1500) to handle the transport of batman-adv packets. Packets going over this interface will be fragmented on layer2 which could impact the performance. Setting the MTU to 1527 would solve the problem. [ 2517.355936] batman_adv: bat0: Interface activated: eth1 [ 2517.418926] batman_adv: bat0: Adding interface: eth2 [ 2517.421059] batman_adv: bat0: The MTU of interface eth2 is too small (1500) to handle the transport of batman-adv packets. Packets going over this interface will be fragmented on layer2 which could impact the performance. Setting the MTU to 1527 would solve the problem. [ 2517.478851] batman_adv: bat0: Interface activated: eth2 [ 2522.997380] batman_adv: bat0: Interface deactivated: eth1 [ 2522.999743] batman_adv: bat0: Removing interface: eth1 [ 2523.002569] batman_adv: bat0: Interface deactivated: eth2 [ 2523.004800] batman_adv: bat0: Removing interface: eth2 [ 2523.059381] BUG: scheduling while atomic: rmmod/5792/0x10000100 [ 2523.061848] Modules linked in: batman_adv(-) [last unloaded: batman_adv] [ 2523.064749] [ 2523.065989] Pid: 5792, comm: rmmod Not tainted (188.8.131.52 #1) Bochs [ 2523.068390] EIP: 0060:[<c103edfc>] EFLAGS: 00000292 CPU: 0 [ 2523.070775] EIP is at vprintk+0x262/0x285 [ 2523.072893] EAX: c1750dec EBX: ce665ed1 ECX: 0000b6b6 EDX: 00000046 [ 2523.075561] ESI: c1790ec2 EDI: 0000000f EBP: ce665f00 ESP: ce665ea8 [ 2523.078004] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 [ 2523.080405] CR0: 8005003b CR2: b7ee1920 CR3: 0fb57000 CR4: 00000690 [ 2523.082957] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 2523.085436] DR6: ffff0ff0 DR7: 00000400 [ 2523.126448] Call Trace: [ 2523.127943] [<d2155a9a>] ? _purge_orig+0x168/0x170 [batman_adv] [ 2523.130441] [<c14219ac>] printk+0xf/0x11 [ 2523.132304] [<d2154ac9>] hardif_disable_interface+0x36/0x10c [batman_adv] [ 2523.134961] [<d2154bb0>] hardif_remove_interface+0x11/0x3c [batman_adv] [ 2523.137507] [<d2154e43>] hardif_remove_interfaces+0x21/0x3a [batman_adv] [ 2523.140210] [<d2156d67>] batman_exit+0x17/0x9c [batman_adv] [ 2523.142506] [<c105eabf>] sys_delete_module+0x1a7/0x200 [ 2523.144680] [<c108bd64>] ? remove_vma+0x46/0x4c [ 2523.146722] [<c108c953>] ? do_munmap+0x20a/0x225 [ 2523.148881] [<c101ce7a>] syscall_call+0x7/0xb [ 2523.150883] [<c1420000>] ? migration_call+0x3b2/0x3c9
Updated by Marek Lindner over 10 years ago
Are you sure this bug was introduced with revision 1821 ? The error message "scheduling while atomic" indicates that the module sleeps but runs in a context which does not allow sleeping. I don't see how that could have been introduced with 1821. Furthermore, the backtrace points to _purge_orig() ...