Search Linux Wireless

Re: Kernel oops when loading ath5k from compat-wireless in 2.6.27

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

 



On Fri, Nov 14, 2008 at 8:29 PM, Bob Copeland <me@xxxxxxxxxxxxxxx> wrote:
> On Fri, Nov 14, 2008 at 08:05:09PM -0600, Dan McGee wrote:
>> On Fri, Nov 14, 2008 at 6:36 PM, Luis R. Rodriguez
>> Of course, now that I have a kernel with full debug symbols, I can't
>> get it to oops. Figures. I'll keep you updated if I see this error
>> again.
>
> Grasping at straws, is there any chance your kernel didn't match up
> with the compiled modules from compat-wireless?  For example, you
> reconfigured the kernel without rebuilding it, then compat-wireless
> picked up your .config?  I suppose that could lead to structures being
> defined with wrong offsets...

I doubt it; I'm compiling the whole enchilada in one go so it should
definitely match up. I just reproduced it with a brand new build after
going back to a no-symbols kernel. Here is a transcribed OOPS dump
since this one leaves the machine in a state where it doesn't even
finish booting up. I can *only* get this if I compile without
debugging symbols, and looking at the call trace, you can see the
apic_timer_interrupt call which leads me to believe it is some sort of
timing/race issue that a debug kernel doesn't run into.

-Dan

BUG: unable to handle kernel NULL pointer dereference at 00000082
IP: [<7818ca71>] sysfs_find_dirent+0x9/0x23
Oops: 0000 [#1] PREEMPT
Modules linked in: ath5k(+) mac80211

Pid: 818 comm: modprobe Not tainted (2.6.27.6eee #1)
EIP: 0060:[<7818ca71>] EFLAGS: 00010206 CPU: 0
EIP is at sysfs_find_dirent+0x9/0x23
EAX: 00000001 EBX: 00000072 ECX: 00000001 EDX: b730b4f0
ESI: b730b4f0 EDI: fffffff4 EBP: b7311490 ESP: b73ffd34
 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
Stack: <<<i'm too lazy>>>>
Call Trace:
 [<7818cb39>]: __sysfs_add_one+0x10/0x69
 [<7818cba2>]: sysfs_add_one+0x9/0x2f
 [<7818d0bc>]: create_dir+0x3c/0x62
 sysfs_create_dir+0x29/0x3b
 kobject_get
 kobject_add_internal
 kobject_add
 device_add+0x75/0x456
 apic_timer_interrupt+0x28/0x30
 strlcpy+0x11/0x3e
 register_netdevice+0x1f1/0x31a
 ieee80211_register_hw+0x1eb/0x2d0 [mac80211]
 ath5k_pci_probe+0xc27/0x1150 [ath5k]
 find_inode
 pci_device_probe
 driver_probe_device
 .......
 init_ath5k_pci [ath5k]
 .......
 ==============
Code: dd 85 c0 53 89 c3 74 16 83 38 00 75 0f ba 82 00 00 00 b8 f7 75
3c 78 e8 70 da f8 ff ff 03 89 d8 5b c3 56 89 d6 53 8b 58 18 eb 11 <8b>
43 10 89 f2 e8 34 cc 04 00 85 c0 74 07 8b 5b 0c 85 db 75 eb

$ AFLAGS=--32 scripts/decodecode < /tmp/oops.txt
Code: dd 85 c0 53 89 c3 74 16 83 38 00 75 0f ba 82 00 00 00 b8 f7 75
3c 78 e8 70 da f8 ff ff 03 89 d8 5b c3 56 89 d6 53 8b 58 18 eb 11 <8b>
43 10 89 f2 e8 34 cc 04 00 85 c0 74 07 8b 5b 0c 85 db 75 eb

/tmp/tmp.xJNdgiQwSL.o:     file format elf32-i386

Disassembly of section .text:

00000000 <.text>:
   0:	dd 85 c0 53 89 c3    	fldl   -0x3c76ac40(%ebp)
   6:	74 16                	je     0x1e
   8:	83 38 00             	cmpl   $0x0,(%eax)
   b:	75 0f                	jne    0x1c
   d:	ba 82 00 00 00       	mov    $0x82,%edx
  12:	b8 f7 75 3c 78       	mov    $0x783c75f7,%eax
  17:	e8 70 da f8 ff       	call   0xfff8da8c
  1c:	ff 03                	incl   (%ebx)
  1e:	89 d8                	mov    %ebx,%eax
  20:	5b                   	pop    %ebx
  21:	c3                   	ret
  22:	56                   	push   %esi
  23:	89 d6                	mov    %edx,%esi
  25:	53                   	push   %ebx
  26:	8b 58 18             	mov    0x18(%eax),%ebx
  29:	eb 11                	jmp    0x3c

/tmp/tmp.xJNdgiQwSL.o:     file format elf32-i386

Disassembly of section .text:

00000000 <.text>:
   0:	8b 43 10             	mov    0x10(%ebx),%eax
   3:	89 f2                	mov    %esi,%edx
   5:	e8 34 cc 04 00       	call   0x4cc3e
   a:	85 c0                	test   %eax,%eax
   c:	74 07                	je     0x15
   e:	8b 5b 0c             	mov    0xc(%ebx),%ebx
  11:	85 db                	test   %ebx,%ebx
  13:	75 eb                	jne    0x0


And the objdump output from that function, but my novice eyes can't
pick out where the above code corresponds to:
0000027d <__sysfs_add_one>:
 27d:   56                      push   %esi
 27e:   89 c6                   mov    %eax,%esi
 280:   53                      push   %ebx
 281:   89 d3                   mov    %edx,%ebx
 283:   8b 00                   mov    (%eax),%eax
 285:   8b 52 10                mov    0x10(%edx),%edx
 288:   e8 fc ff ff ff          call   289 <__sysfs_add_one+0xc>
 28d:   ba ef ff ff ff          mov    $0xffffffef,%edx
 292:   85 c0                   test   %eax,%eax
 294:   75 4b                   jne    2e1 <__sysfs_add_one+0x64>
 296:   8b 06                   mov    (%esi),%eax
 298:   e8 fe fe ff ff          call   19b <sysfs_get>
 29d:   80 7b 1c 01             cmpb   $0x1,0x1c(%ebx)
 2a1:   89 43 08                mov    %eax,0x8(%ebx)
 2a4:   75 0a                   jne    2b0 <__sysfs_add_one+0x33>
 2a6:   8b 46 04                mov    0x4(%esi),%eax
 2a9:   85 c0                   test   %eax,%eax
 2ab:   74 03                   je     2b0 <__sysfs_add_one+0x33>
 2ad:   ff 40 28                incl   0x28(%eax)
 2b0:   ff 46 0c                incl   0xc(%esi)
 2b3:   83 7b 0c 00             cmpl   $0x0,0xc(%ebx)
 2b7:   8b 43 08                mov    0x8(%ebx),%eax
 2ba:   74 04                   je     2c0 <__sysfs_add_one+0x43>
 2bc:   0f 0b                   ud2a
 2be:   eb fe                   jmp    2be <__sysfs_add_one+0x41>
 2c0:   8d 48 18                lea    0x18(%eax),%ecx
 2c3:   8b 50 18                mov    0x18(%eax),%edx
 2c6:   eb 0e                   jmp    2d6 <__sysfs_add_one+0x59>
 2c8:   8b 43 20                mov    0x20(%ebx),%eax
 2cb:   3b 42 20                cmp    0x20(%edx),%eax
 2ce:   72 0a                   jb     2da <__sysfs_add_one+0x5d>
 2d0:   8d 4a 0c                lea    0xc(%edx),%ecx
 2d3:   8b 52 0c                mov    0xc(%edx),%edx
 2d6:   85 d2                   test   %edx,%edx
 2d8:   75 ee                   jne    2c8 <__sysfs_add_one+0x4b>
 2da:   89 53 0c                mov    %edx,0xc(%ebx)
 2dd:   31 d2                   xor    %edx,%edx
 2df:   89 19                   mov    %ebx,(%ecx)
 2e1:   5b                      pop    %ebx
 2e2:   89 d0                   mov    %edx,%eax
 2e4:   5e                      pop    %esi
 2e5:   c3                      ret
--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux