[PATCH] ath6kl: fix device registration ordering

Luis R. Rodriguez lrodriguez at atheros.com
Fri Mar 18 17:36:23 UTC 2011


On Fri, Mar 18, 2011 at 10:35 AM, Luis R. Rodriguez
<lrodriguez at atheros.com> wrote:
> On Thu, Mar 17, 2011 at 7:45 PM, Luis R. Rodriguez
> <lrodriguez at atheros.com> wrote:
>> Defer device registration to cfg80211 until it is ready.
>> This fixes a race against udev whereby device events
>> (both udev and RTNL) might be emitted with an unregistered
>> device specification (wlan%d).
>>
>> This fixes a race on ath6kl on systems where the device
>> boots up really quickly to the the point udev and the
>> respective userspace daemon tries to start mucking with
>> the device prior to the device being initialized properly.
>>
>> This fixes this bug:
>>
>> http://code.google.com/p/chromium-os/issues/detail?id=13159
>>
>> Without this loading of ath6kl will fail.
>>
>> Cc: stable at kernel.org
>> Cc: Naveen Singh <naveen.singh at atheros.com>
>> Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
>
> Please disregard this for now, I am testing ath6k right now on x86_64
> where it has a failure upon load and it oopses, likely due to this
> patch and what I believe is wiphy_unregister() being called twice.
> I'll fix the oops first and then resubmit a v2. If you do not hit a
> failure upon load though then the patch would help your issues with
> udev, but still we must handle the failure cases better. My failure
> are because I'm using an x86_64 box to test ath6kl and its buggy
> there.

FWIW the oops is:


[    7.100017] ABI Version mismatch: Host(0x1), Target(0x0)
[    7.100057] ar6000_avail: ar6000_init
[    7.100096] BUG: unable to handle kernel NULL pointer dereference at 00000004
[    7.100139] IP: [<c042a9f6>] device_pm_remove+0x26/0x50
[    7.100176] *pdpt = 0000000032244001 *pde = 0000000000000000
[    7.100212] Oops: 0002 [#1] SMP
[    7.100235] last sysfs file: /sys/kernel/uevent_seqnum
[    7.100265] Modules linked in: snd_hda_codec_hdmi
snd_hda_codec_analog radeon snd_hda_intel snd_hda_codec snd_hwdep
ath6kl(C) snd_pcm ttm drm_kms_helper snd_seq_midi drm snd_
rawmidi snd_seq_midi_event cfg80211 snd_seq snd_timer snd_seq_device
psmouse snd asus_atk0110 serio_raw joydev k10temp ati_agp soundcore
snd_page_alloc agpgart i2c_piix4 i2c_alg
o_bit lp parport usbhid hid usb_storage mmc_block pata_marvell
firewire_ohci sdhci_pci ahci sdhci sky2 floppy firewire_core crc_itu_t
libahci pata_atiixp
[    7.100596]
[    7.100607] Pid: 718, comm: AR6K startup Tainted: G         C
2.6.38-rc5+ #8 System manufacturer System Product Name/M3A79-T DELUXE
[    7.100681] EIP: 0060:[<c042a9f6>] EFLAGS: 00010286 CPU: 2
[    7.100712] EIP is at device_pm_remove+0x26/0x50
[    7.100738] EAX: f19856a4 EBX: f1985644 ECX: 00000000 EDX: 00000000
[    7.100772] ESI: f073004c EDI: f0730164 EBP: f06f7eec ESP: f06f7ee8
[    7.100806]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[    7.100836] Process AR6K startup (pid: 718, ti=f06f6000
task=f214b280 task.ti=f06f6000)
[    7.100881] Stack:
[    7.100894]  f1985644 f06f7f00 c0421d2f f1985600 f073004c f07300e0
f06f7f0c c05e4589
[    7.100952]  f0730000 f06f7f40 f85073dc f06f7f10 e9bfc120 00000000
f86e1329 f06f7f40
[    7.101009]  c027f962 e9bfc120 00000000 f1984600 f07302c0 ffffffff
f06f7f58 f86a536b
[    7.101067] Call Trace:
[    7.101084]  [<c0421d2f>] device_del+0x2f/0x190
[    7.101111]  [<c05e4589>] rfkill_unregister+0x49/0xa0
[    7.101145]  [<f85073dc>] wiphy_unregister+0x2c/0x170 [cfg80211]
[    7.101181]  [<c027f962>] ? sysfs_hash_and_remove+0x72/0x80
[    7.101217]  [<f86a536b>] ar6k_cfg80211_deinit+0x4b/0x80 [ath6kl]
[    7.101255]  [<f86b382a>] ? ar6000_sysfs_bmi_deinit+0x2a/0x40 [ath6kl]
[    7.101296]  [<f86bb395>] ar6000_avail_ev+0x455/0x830 [ath6kl]
[    7.101330]  [<c014d090>] ? default_wake_function+0x10/0x20
[    7.101366]  [<f86ba830>] ? ar6000_target_failure+0x0/0x80 [ath6kl]
[    7.101406]  [<f86d4100>] ? startup_task+0x0/0x60 [ath6kl]
[    7.101440]  [<f86d4121>] startup_task+0x21/0x60 [ath6kl]
[    7.101475]  [<f86d4100>] ? startup_task+0x0/0x60 [ath6kl]
[    7.101506]  [<c0170874>] kthread+0x74/0x80
[    7.101530]  [<c0170800>] ? kthread+0x0/0x80
[    7.101555]  [<c010ad7e>] kernel_thread_helper+0x6/0x10
[    7.101584] Code: 90 8d 74 26 00 55 89 e5 53 3e 8d 74 26 00 89 c3
83 c0 68 e8 6d 5a d1 ff b8 cc 39 85 c0 e8 03 7d 1d 00 8b 4b 60 8d 43
60 8b 53 64 <89> 51 04 89 0a 89 43 60 89 43 64 b8 cc 39 85 c0 e8 75 7a
1d 00
[    7.101822] EIP: [<c042a9f6>] device_pm_remove+0x26/0x50 SS:ESP 0068:f06f7ee8
[    7.101866] CR2: 0000000000000004
[    7.101886] ---[ end trace 769975b16fdd074b ]---

  Luis



More information about the devel mailing list