Bug 10002

Summary: wpa_supplicant doens't work and froze the computer
Product: Networking Reporter: François Valenduc (francoisvalenduc)
Component: WirelessAssignee: networking_wireless (networking_wireless)
Status: CLOSED CODE_FIX    
Severity: high CC: axboe, bunk, Hugo.Mildenberger, jan, maekke, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.25-rc2 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 9832    
Attachments: kernel configuration file

Description François Valenduc 2008-02-16 08:25:24 UTC
Latest working kernel version: 2.6.25-rc1
Earliest failing kernel version: 2.6.25-rc2
Distribution: Gentoo
Hardware Environment: Intel Core 2 Duo, Intel Wifi 4965AGN, Packard Bell EasyNoteMB86
Software Environment:
Problem Description:

I have tried 2.6.25-rc2 and there is causes wpa_supplicant to fails and freeze the computer when it is started. I am using WPA-PSK with CCMP encryption. A git-bisect run shows that the first bad commit is the following:

45b503548210fe6f23e92b856421c2a3f05fd034 is first bad commit
commit 45b503548210fe6f23e92b856421c2a3f05fd034
Author: Laszlo Attila Toth <panther@balabit.hu>
Date:   Tue Feb 12 22:42:09 2008 -0800

    [RTNETLINK]: Send a single notification on device state changes.
    
    In do_setlink() a single notification is sent at the end of the
    function if any modification occured. If the address has been changed,
    another notification is sent.
    
    Both of them is required because originally only the NETDEV_CHANGEADDR
    notification was sent and although device state change implies address
    change, some programs may expect the original notification. It remains
    for compatibity.
    
    If set_operstate() is called from do_setlink(), it doesn't send a
    notification, only if it is called from rtnl_create_link() as earlier.
    
    Signed-off-by: Laszlo Attila Toth <panther@balabit.hu>
    Signed-off-by: David S. Miller <davem@davemloft.net>

If I revert it, wpa_supplicant works correctly. 


Steps to reproduce: boot gentoo and wait for net.wlan0 to start. When wpa_supplicant is called, it blocks the computer
Comment 1 François Valenduc 2008-02-16 08:26:22 UTC
Created attachment 14871 [details]
kernel configuration file
Comment 3 Adrian Bunk 2008-02-17 09:04:41 UTC
*** Bug 10009 has been marked as a duplicate of this bug. ***
Comment 4 Rafael J. Wysocki 2008-02-17 15:08:51 UTC
*** Bug 10014 has been marked as a duplicate of this bug. ***
Comment 5 Jens Axboe 2008-02-18 04:13:28 UTC
Is a full revert needed, or is the problem really just the (introduced) double lock instead of a lock/unlock sequence?

+                       write_lock_bh(&dev_base_lock);
+                       dev->link_mode = nla_get_u8(tb[IFLA_LINKMODE]);
+                       write_lock_bh(&dev_base_lock);
Comment 6 Rafael J. Wysocki 2008-02-18 04:20:01 UTC
On my system (openSUSE 10.3 on HP nx6325) NetworkManager still doesn't work correctly after fixing this deadlock.
Comment 7 Rafael J. Wysocki 2008-02-18 04:20:21 UTC
And reverting the entire commit fixes the problem.
Comment 8 Rafael J. Wysocki 2008-02-18 09:10:02 UTC
Patch : http://lkml.org/lkml/2008/2/18/331
Comment 9 François Valenduc 2008-02-18 10:07:54 UTC
With the last patch (in comment #8), wpa_supplicant works correctly.
Comment 10 Hugo Mildenberger 2008-02-18 11:25:42 UTC
That last patch cured bug 10009 with b43/bcm4306. The fixed code now also handles the wlan0_rename issue without manual intervention. 
Comment 12 Markus Meier 2008-02-19 15:43:24 UTC
*** Bug 10005 has been marked as a duplicate of this bug. ***
Comment 13 John W. Linville 2008-02-21 10:27:13 UTC
*** Bug 10058 has been marked as a duplicate of this bug. ***
Comment 14 John W. Linville 2008-02-26 08:26:35 UTC
*** Bug 9946 has been marked as a duplicate of this bug. ***