1. 05 Mar, 2010 2 commits
    • Zhu Yi's avatar
      tcp: use limited socket backlog · 6b03a53a
      Zhu Yi authored
      Make tcp adapt to the limited socket backlog change.
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
      Cc: Patrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
      Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b03a53a
    • Zhu Yi's avatar
      net: add limit for socket backlog · 8eae939f
      Zhu Yi authored
      We got system OOM while running some UDP netperf testing on the loopback
      device. The case is multiple senders sent stream UDP packets to a single
      receiver via loopback on local host. Of course, the receiver is not able
      to handle all the packets in time. But we surprisingly found that these
      packets were not discarded due to the receiver's sk->sk_rcvbuf limit.
      Instead, they are kept queuing to sk->sk_backlog and finally ate up all
      the memory. We believe this is a secure hole that a none privileged user
      can crash the system.
      
      The root cause for this problem is, when the receiver is doing
      __release_sock() (i.e. after userspace recv, kernel udp_recvmsg ->
      skb_free_datagram_locked -> release_sock), it moves skbs from backlog to
      sk_receive_queue with the softirq enabled. In the above case, multiple
      busy senders will almost make it an endless loop. The skbs in the
      backlog end up eat all the system memory.
      
      The issue is not only for UDP. Any protocols using socket backlog is
      potentially affected. The patch adds limit for socket backlog so that
      the backlog size cannot be expanded endlessly.
      Reported-by: default avatarAlex Shi <alex.shi@intel.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru
      Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Vlad Yasevich <vladislav.yasevich@hp.com>
      Cc: Sridhar Samudrala <sri@us.ibm.com>
      Cc: Jon Maloy <jon.maloy@ericsson.com>
      Cc: Allan Stephens <allan.stephens@windriver.com>
      Cc: Andrew Hendry <andrew.hendry@gmail.com>
      Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Acked-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8eae939f
  2. 04 Mar, 2010 13 commits
    • Jiri Pirko's avatar
      rndis_wlan: correct multicast_list handling V3 · 12c3400a
      Jiri Pirko authored
      My previous patch (655ffee2) added locking in
      a bad way. Because rndis_set_oid can sleep, there is need to prepare multicast
      addresses into local buffer under netif_addr_lock first, then call
      rndis_set_oid outside. This caused reorganizing of the whole function.
      Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
      Reported-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      12c3400a
    • David S. Miller's avatar
      MAINTAINERS: Add netdev to bridge entry. · 4c325313
      David S. Miller authored
      Noticed by Ingo Molnar.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c325313
    • Divy Le Ray's avatar
      cxgb3: fix hot plug removal crash · a6f018e3
      Divy Le Ray authored
      queue restart tasklets need to be stopped after napi handlers are stopped
      since the latter can restart them.  So stop them after stopping napi.
      Signed-off-by: default avatarDivy Le Ray <divy@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6f018e3
    • Anton Vorontsov's avatar
      gianfar: Fix TX ring processing on SMP machines · 0eddba52
      Anton Vorontsov authored
      Starting with commit a3bc1f11 ("gianfar: Revive SKB
      recycling") gianfar driver sooner or later stops transmitting any
      packets on SMP machines.
      
      start_xmit() prepares new skb for transmitting, generally it does
      three things:
      
      1. sets up all BDs (marks them ready to send), except the first one.
      2. stores skb into tx_queue->tx_skbuff so that clean_tx_ring()
         would cleanup it later.
      3. sets up the first BD, i.e. marks it ready.
      
      Here is what clean_tx_ring() does:
      
      1. reads skbs from tx_queue->tx_skbuff
      2. checks if the *last* BD is ready. If it's still ready [to send]
         then it it isn't transmitted, so clean_tx_ring() returns.
         Otherwise it actually cleanups BDs. All is OK.
      
      Now, if there is just one BD, code flow:
      
      - start_xmit(): stores skb into tx_skbuff. Note that the first BD
        (which is also the last one) isn't marked as ready, yet.
      - clean_tx_ring(): sees that skb is not null, *and* its lstatus
        says that it is NOT ready (like if BD was sent), so it cleans
        it up (bad!)
      - start_xmit(): marks BD as ready [to send], but it's too late.
      
      We can fix this simply by reordering lstatus/tx_skbuff writes.
      Reported-by: default avatarMartyn Welch <martyn.welch@ge.com>
      Bisected-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Tested-by: default avatarMartyn Welch <martyn.welch@ge.com>
      Cc: Sandeep Gopalpet <Sandeep.Kumar@freescale.com>
      Cc: Stable <stable@vger.kernel.org> [2.6.33]
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0eddba52
    • David Dillow's avatar
      r8169: use correct barrier between cacheable and non-cacheable memory · 4c020a96
      David Dillow authored
      r8169 needs certain writes to be visible to other CPUs or the NIC before
      touching the hardware, but was using smp_wmb() which is only required to
      order cacheable memory access. Switch to wmb() which is required to
      order both cacheable and non-cacheable memory.
      
      Noticed by Catalin Marinas and Paul Mackerras.
      Signed-off-by: default avatarDavid Dillow <dave@thedillows.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c020a96
    • Neil Horman's avatar
      tipc: Fix oops on send prior to entering networked mode (v3) · d0021b25
      Neil Horman authored
      Fix TIPC to disallow sending to remote addresses prior to entering NET_MODE
      
      user programs can oops the kernel by sending datagrams via AF_TIPC prior to
      entering networked mode.  The following backtrace has been observed:
      
      ID: 13459  TASK: ffff810014640040  CPU: 0   COMMAND: "tipc-client"
      [exception RIP: tipc_node_select_next_hop+90]
      RIP: ffffffff8869d3c3  RSP: ffff81002d9a5ab8  RFLAGS: 00010202
      RAX: 0000000000000001  RBX: 0000000000000001  RCX: 0000000000000001
      RDX: 0000000000000000  RSI: 0000000000000001  RDI: 0000000001001001
      RBP: 0000000001001001   R8: 0074736575716552   R9: 0000000000000000
      R10: ffff81003fbd0680  R11: 00000000000000c8  R12: 0000000000000008
      R13: 0000000000000001  R14: 0000000000000001  R15: ffff810015c6ca00
      ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
      RIP: 0000003cbd8d49a3  RSP: 00007fffc84e0be8  RFLAGS: 00010206
      RAX: 000000000000002c  RBX: ffffffff8005d116  RCX: 0000000000000000
      RDX: 0000000000000008  RSI: 00007fffc84e0c00  RDI: 0000000000000003
      RBP: 0000000000000000   R8: 00007fffc84e0c10   R9: 0000000000000010
      R10: 0000000000000000  R11: 0000000000000246  R12: 0000000000000000
      R13: 00007fffc84e0d10  R14: 0000000000000000  R15: 00007fffc84e0c30
      ORIG_RAX: 000000000000002c  CS: 0033  SS: 002b
      
      What happens is that, when the tipc module in inserted it enters a standalone
      node mode in which communication to its own address is allowed <0.0.0> but not
      to other addresses, since the appropriate data structures have not been
      allocated yet (specifically the tipc_net pointer).  There is nothing stopping a
      client from trying to send such a message however, and if that happens, we
      attempt to dereference tipc_net.zones while the pointer is still NULL, and
      explode.  The fix is pretty straightforward.  Since these oopses all arise from
      the dereference of global pointers prior to their assignment to allocated
      values, and since these allocations are small (about 2k total), lets convert
      these pointers to static arrays of the appropriate size.  All the accesses to
      these bits consider 0/NULL to be a non match when searching, so all the lookups
      still work properly, and there is no longer a chance of a bad dererence
      anywhere.  As a bonus, this lets us eliminate the setup/teardown routines for
      those pointers, and elimnates the need to preform any locking around them to
      prevent access while their being allocated/freed.
      
      I've updated the tipc_net structure to behave this way to fix the exact reported
      problem, and also fixed up the tipc_bearers and media_list arrays to fix an
      obvious simmilar problem that arises from issuing tipc-config commands to
      manipulate bearers/links prior to entering networked mode
      
      I've tested this for a few hours by running the sanity tests and stress test
      with the tipcutils suite, and nothing has fallen over.  There have been a few
      lockdep warnings, but those were there before, and can be addressed later, as
      they didn't actually result in any deadlock.
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: Allan Stephens <allan.stephens@windriver.com>
      CC: David S. Miller <davem@davemloft.net>
      CC: tipc-discussion@lists.sourceforge.net
      
       bearer.c |   37 ++++++-------------------------------
       bearer.h |    2 +-
       net.c    |   25 ++++---------------------
       3 files changed, 11 insertions(+), 53 deletions(-)
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d0021b25
    • Timo Teräs's avatar
      gre: fix hard header destination address checking · 6d55cb91
      Timo Teräs authored
      ipgre_header() can be called with zero daddr when the gre device is
      configured as multipoint tunnel and still has the NOARP flag set (which is
      typically cleared by the userspace arp daemon).  If the NOARP packets are
      not dropped, ipgre_tunnel_xmit() will take rt->rt_gateway (= NBMA IP) and
      use that for route look up (and may lead to bogus xfrm acquires).
      
      The multicast address check is removed as sending to multicast group should
      be ok.  In fact, if gre device has a multicast address as destination
      ipgre_header is always called with multicast address.
      Signed-off-by: default avatarTimo Teras <timo.teras@iki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6d55cb91
    • Mike Galbraith's avatar
      net: add scheduler sync hint to tcp_prequeue(). · c839d30a
      Mike Galbraith authored
      Decreases the odds wakee will suffer from frequent cache misses.
      Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c839d30a
    • stephen hemminger's avatar
      IPv6: fix race between cleanup and add/delete address · 8f37ada5
      stephen hemminger authored
      This solves a potential race problem during the cleanup process.
      The issue is that addrconf_ifdown() needs to traverse address list,
      but then drop lock to call the notifier. The version in -next
      could get confused if add/delete happened during this window.
      Original code (2.6.32 and earlier) was okay because all addresses
      were always deleted.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8f37ada5
    • stephen hemminger's avatar
      IPv6: addrconf notify when address is unavailable · 84e8b803
      stephen hemminger authored
      My recent change in net-next to retain permanent addresses caused regression.
      Device refcount would not go to zero when device was unregistered because
      left over anycast reference would hold ipv6 dev reference which would hold
      device references...
      
      The correct procedure is to call notify chain when address is no longer
      available for use.  When interface comes back DAD timer will notify
      back that address is available.
      
      Also, link local addresses should be purged when interface is brought
      down. The address might be changed.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84e8b803
    • stephen hemminger's avatar
      IPv6: addrconf timer race · 5b2a1953
      stephen hemminger authored
      The Router Solicitation timer races with device state changes
      because it doesn't lock the device. Use local variable to avoid
      one repeated dereference.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5b2a1953
    • stephen hemminger's avatar
      IPv6: addrconf dad timer unnecessary bh_disable · 122e4519
      stephen hemminger authored
      Timer code runs in bottom half, so there is no need for
      using _bh form of locking.  Also check if device is not ready
      to avoid race with address that is no longer active.
      Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      122e4519
    • David S. Miller's avatar
  3. 03 Mar, 2010 11 commits
  4. 02 Mar, 2010 14 commits
    • Johannes Berg's avatar
      iwlwifi: load firmware asynchronously before mac80211 registration · b08dfd04
      Johannes Berg authored
      At the wireless summit in Portland we discussed a way of
      loading firmware asynchronously from ->probe() before
      registration to mac80211, in order to register with the
      wireless subsystems with complete information in cases
      where firmware is required to know parameters.
      
      This is not yet the case in iwlwifi, but for some new
      features we're working on it will be the case since
      those will only be supported by new firmware images.
      
      Hence, to start with, convert iwlwifi to load firmware
      asynchronously from probe, unbinding the device when
      firmware loading fails, and only registering with the
      wireless subsystems after firmware has been loaded
      successfully.
      
      Future patches will hook into this to register the
      new firmware capabilities, depending on the firmware
      API version.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      b08dfd04
    • Johannes Berg's avatar
      ar9170: load firmware asynchronously · 53576517
      Johannes Berg authored
      This converts ar9170 to load firmware asynchronously
      out of ->probe() and only register with mac80211 when
      all firmware has been loaded successfully. If, on the
      other hand, any firmware fails to load, it will now
      unbind from the device.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      53576517
    • Helmut Schaa's avatar
      rt2x00: fix rt2800pci compilation with SoC · 6e93d719
      Helmut Schaa authored
      Compiling rt2800pci with CONFIG_RT2800PCI_SOC fails with "... rt2880pci.c:
      error: incompatible type for argument 2 of 'rt2x00soc_probe'".
      
      Fix this by using &rt2800pci_ops instead of rt2800pci_ops.
      Signed-off-by: default avatarHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      6e93d719
    • Bryan Polk's avatar
      rt2x00: Add USB ID for CEIVA adapter to rt73usb · 51b2853f
      Bryan Polk authored
      This adds support for CEIVA USB wireless adapters to the rt73usb driver.
      Signed-off-by: default avatarBryan Polk <sainth@eidolons.org>
      Acked-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      51b2853f
    • Jouni Malinen's avatar
      mac80211: Fix reassociation processing (within ESS roaming) · 9c87ba67
      Jouni Malinen authored
      Commit e1dd33f60ced091114e4aacf141e0d03b88d3e13 changed cfg80211 to
      allow association commands while in associated state to enable support
      for roaming within an ESS. However, this was not enough to resolve all
      cases with mac80211 which needs some additional handling of the
      reassociation case to clear internal state with the BSS that was in use
      previously.
      
      This patch makes ieee80211_mgd_assoc() accept a valid reassociation
      command and clean the association state with the previous BSS. This
      fixes roaming between BSSes in an ESS when using wpa_supplicant with
      -Dnl80211.
      Signed-off-by: default avatarJouni Malinen <j@w1.fi>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9c87ba67
    • Ming Lei's avatar
      ath9k: fix lockdep warning when unloading module · a9f042cb
      Ming Lei authored
      Since txq->axq_lock may be hold in softirq context, it must be
      acquired with spin_lock_bh() instead of spin_lock() if softieq is
      enabled.
      
      The patch fixes the lockdep warning below when unloading ath9k modules.
      
      =================================
      [ INFO: inconsistent lock state ]
      2.6.33-wl #12
      ---------------------------------
      inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
      rmmod/3642 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (&(&txq->axq_lock)->rlock){+.?...}, at: [<ffffffffa03568c3>] ath_tx_node_cleanup+0x62/0x180 [ath9k]
      {IN-SOFTIRQ-W} state was registered at:
        [<ffffffff8107577d>] __lock_acquire+0x2f6/0xd35
        [<ffffffff81076289>] lock_acquire+0xcd/0xf1
        [<ffffffff813a7486>] _raw_spin_lock_bh+0x3b/0x6e
        [<ffffffffa0356b49>] spin_lock_bh+0xe/0x10 [ath9k]
        [<ffffffffa0358ec7>] ath_tx_tasklet+0xcd/0x391 [ath9k]
        [<ffffffffa0354f5f>] ath9k_tasklet+0x70/0xc8 [ath9k]
        [<ffffffff8104e601>] tasklet_action+0x8c/0xf4
        [<ffffffff8104f459>] __do_softirq+0xf8/0x1cd
        [<ffffffff8100ab1c>] call_softirq+0x1c/0x30
        [<ffffffff8100c2cf>] do_softirq+0x4b/0xa3
        [<ffffffff8104f045>] irq_exit+0x4a/0x8c
        [<ffffffff813acccc>] do_IRQ+0xac/0xc3
        [<ffffffff813a7d53>] ret_from_intr+0x0/0x16
        [<ffffffff81302d52>] cpuidle_idle_call+0x9e/0xf8
        [<ffffffff81008be7>] cpu_idle+0x62/0x9d
        [<ffffffff81391c1a>] rest_init+0x7e/0x80
        [<ffffffff818bbd38>] start_kernel+0x3e8/0x3f3
        [<ffffffff818bb2bc>] x86_64_start_reservations+0xa7/0xab
        [<ffffffff818bb3b8>] x86_64_start_kernel+0xf8/0x107
      irq event stamp: 42037
      hardirqs last  enabled at (42037): [<ffffffff813a7b21>] _raw_spin_unlock_irqrestore+0x47/0x56
      hardirqs last disabled at (42036): [<ffffffff813a72f4>] _raw_spin_lock_irqsave+0x2b/0x88
      softirqs last  enabled at (42000): [<ffffffffa0353ea6>] spin_unlock_bh+0xe/0x10 [ath9k]
      softirqs last disabled at (41998): [<ffffffff813a7463>] _raw_spin_lock_bh+0x18/0x6e
      
      other info that might help us debug this:
      4 locks held by rmmod/3642:
       #0:  (rtnl_mutex){+.+.+.}, at: [<ffffffff8132c10d>] rtnl_lock+0x17/0x19
       #1:  (&wdev->mtx){+.+.+.}, at: [<ffffffffa01e53f2>] cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       #2:  (&ifmgd->mtx){+.+.+.}, at: [<ffffffffa0260834>] ieee80211_mgd_deauth+0x3f/0x17e [mac80211]
       #3:  (&local->sta_mtx){+.+.+.}, at: [<ffffffffa025a381>] sta_info_destroy_addr+0x2b/0x5e [mac80211]
      
      stack backtrace:
      Pid: 3642, comm: rmmod Not tainted 2.6.33-wl #12
      Call Trace:
       [<ffffffff81074469>] valid_state+0x178/0x18b
       [<ffffffff81014f94>] ? save_stack_trace+0x2f/0x4c
       [<ffffffff81074e08>] ? check_usage_backwards+0x0/0x88
       [<ffffffff8107458f>] mark_lock+0x113/0x230
       [<ffffffff810757f1>] __lock_acquire+0x36a/0xd35
       [<ffffffff8101018d>] ? native_sched_clock+0x2d/0x5f
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff81076289>] lock_acquire+0xcd/0xf1
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff810732eb>] ? trace_hardirqs_off+0xd/0xf
       [<ffffffff813a7193>] _raw_spin_lock+0x36/0x69
       [<ffffffffa03568c3>] ? ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffffa03568c3>] ath_tx_node_cleanup+0x62/0x180 [ath9k]
       [<ffffffff810749ed>] ? trace_hardirqs_on+0xd/0xf
       [<ffffffffa0353950>] ath9k_sta_remove+0x22/0x26 [ath9k]
       [<ffffffffa025a08f>] __sta_info_destroy+0x1ad/0x38c [mac80211]
       [<ffffffffa025a394>] sta_info_destroy_addr+0x3e/0x5e [mac80211]
       [<ffffffffa02605d6>] ieee80211_set_disassoc+0x175/0x180 [mac80211]
       [<ffffffffa026084d>] ieee80211_mgd_deauth+0x58/0x17e [mac80211]
       [<ffffffff813a60c1>] ? __mutex_lock_common+0x37f/0x3a4
       [<ffffffffa01e53f2>] ? cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       [<ffffffffa026786e>] ieee80211_deauth+0x1e/0x20 [mac80211]
       [<ffffffffa01f47f9>] __cfg80211_mlme_deauth+0x130/0x13f [cfg80211]
       [<ffffffffa01e53f2>] ? cfg80211_netdev_notifier_call+0x28d/0x46d [cfg80211]
       [<ffffffff810732eb>] ? trace_hardirqs_off+0xd/0xf
       [<ffffffffa01f7eee>] __cfg80211_disconnect+0x111/0x189 [cfg80211]
       [<ffffffffa01e5433>] cfg80211_netdev_notifier_call+0x2ce/0x46d [cfg80211]
       [<ffffffff813aa9ea>] notifier_call_chain+0x37/0x63
       [<ffffffff81068c98>] raw_notifier_call_chain+0x14/0x16
       [<ffffffff81322e97>] call_netdevice_notifiers+0x1b/0x1d
       [<ffffffff8132386d>] dev_close+0x6a/0xa6
       [<ffffffff8132395f>] rollback_registered_many+0xb6/0x2f4
       [<ffffffff81323bb8>] unregister_netdevice_many+0x1b/0x66
       [<ffffffffa026494f>] ieee80211_remove_interfaces+0xc5/0xd0 [mac80211]
       [<ffffffffa02580a2>] ieee80211_unregister_hw+0x47/0xe8 [mac80211]
       [<ffffffffa035290e>] ath9k_deinit_device+0x7a/0x9b [ath9k]
       [<ffffffffa035bc26>] ath_pci_remove+0x38/0x76 [ath9k]
       [<ffffffff8120940a>] pci_device_remove+0x2d/0x51
       [<ffffffff8129d797>] __device_release_driver+0x7b/0xd1
       [<ffffffff8129d885>] driver_detach+0x98/0xbe
       [<ffffffff8129ca7a>] bus_remove_driver+0x94/0xb7
       [<ffffffff8129ddd6>] driver_unregister+0x6c/0x74
       [<ffffffff812096d2>] pci_unregister_driver+0x46/0xad
       [<ffffffffa035bae1>] ath_pci_exit+0x15/0x17 [ath9k]
       [<ffffffffa035e1a2>] ath9k_exit+0xe/0x2f [ath9k]
       [<ffffffff8108050a>] sys_delete_module+0x1c7/0x236
       [<ffffffff813a7df5>] ? retint_swapgs+0x13/0x1b
       [<ffffffff810749b5>] ? trace_hardirqs_on_caller+0x119/0x144
       [<ffffffff8109b9f6>] ? audit_syscall_entry+0x11e/0x14a
       [<ffffffff81009bb2>] system_call_fastpath+0x16/0x1b
      wlan1: deauthenticating from 00:23:cd:e1:f9:b2 by local choice (reason=3)
      PM: Removing info for No Bus:wlan1
      cfg80211: Calling CRDA to update world regulatory domain
      PM: Removing info for No Bus:rfkill2
      PM: Removing info for No Bus:phy1
      ath9k 0000:16:00.0: PCI INT A disabled
      Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      a9f042cb
    • Dan Carpenter's avatar
      zd1211rw: fix potential array underflow · 86baf712
      Dan Carpenter authored
      The first chunk fixes a debugging assert to print a warning about array underflows.
      The second chunk corrects a potential array underflow.  I also removed an assert
      in the second chunk because it can no longer happen.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Acked-by: default avatarBenoit Papillault <benoit.papillault@free.fr>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      86baf712
    • Matthew Garrett's avatar
      rfkill: Add support for KEY_RFKILL · 3082a2b7
      Matthew Garrett authored
      Add support for handling KEY_RFKILL in the rfkill input module. This
      simply toggles the state of all rfkill devices. The comment in rfkill.h
      is also updated to reflect that RFKILL_TYPE_ALL may be used inside the
      kernel.
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      3082a2b7
    • Stanislaw Gruszka's avatar
      airo: return from set_wep_key() when key length is zero · 6510b891
      Stanislaw Gruszka authored
      Even if keylen == 0 is a bug and should not really happen, better avoid
      possibility of passing bad value to firmware.
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      6510b891
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux · 3a5b27bf
      Linus Torvalds authored
      * 'for-linus' of git://gitorious.org/linux-omap-dss2/linux: (49 commits)
        OMAP: DSS2: Taal: Fix TE when resuming
        OMAP: DSS2: Taal: Fix ESD check
        OMAP: DSS2: OMAPFB: Constify some function parameters
        OMAP: DSS2: OMAPFB: install omapfb.h
        OMAP: DSS2: DSI: add error prints
        OMAP: DSS2: TPO-TD03MTEA1: fix function names
        OMAP: DSS2: DSI: add dsi_vc_dcs_read_2() helper
        OMAP: DSS2: OMAPFB: Remove FB_OMAP2_FORCE_AUTO_UPDATE
        OMAP: DSS2: DSI: remove external TE support
        OMAP: DSS2: move timing functions
        OMAP: DSS2: move set/get_wss()
        OMAP: DSS2: move enable/disable/suspend/resume
        OMAP: DSS2: move update() and sync()
        OMAP: DSS2: move set/get_update_mode()
        OMAP: DSS2: move enable/get_te()
        OMAP: DSS2: move get_recommended_bpp()
        OMAP: DSS2: move get_resolution()
        OMAP: DSS2: move enable/disable_channel to overlay manager
        OMAP: DSS2: move wait_vsync()
        OMAP: DSS2: move get/set_rotate()
        ...
      3a5b27bf
    • Linus Torvalds's avatar
      Merge branch 'omap-for-linus' of... · 5057bfaf
      Linus Torvalds authored
      Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
      
      * 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (214 commits)
        omap2: Initialize Menelaus and MMC for N8X0
        AM3517 EVM: correct typo - tca6416 mispelt as tca6516
        AM3517 EVM: Enable I2C support
        AM35x: Enable OMAP_MUX in defconfig
        AM35x: Add missing GPIO mux config for EHCI port
        Zoom3: Defconfig update
        omap: i2c: Fix muxing for command line enabled bus
        OMAP4: clock: Remove clock hacks from timer-gp.c
        OMAP4: clock: Add dummy clock nodes for interface clocks
        OMAP4: clock: Rename leaf clock nodes to end with a _ick or _fck
        OMAP2+ clock: revise omap2_clk_{disable,enable}()
        OMAP2/3 clock: combine OMAP2 & 3 boot-time MPU rate change code
        OMAP clockdomain: if no autodeps exist, don't try to add or remove them
        OMAP hwmod: add hwmod class support
        OMAP hwmod: convert header files with static allocations into C files
        OMAP hwmod: convert hwmod to use hardware clock names rather than clkdev dev+con
        OMAP clock: add omap_clk_get_by_name() for use by OMAP hwmod core code
        OMAP3: clock: add capability to change rate of dpll4_m5_ck_3630
        OMAP4 clock: drop the ALWAYS_ENABLED clock flag
        OMAP clock: drop RATE_FIXED clock flag
        ...
      5057bfaf
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · 6c0ad5df
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
        Revert "blkdev: fix merge_bvec_fn return value checks"
      6c0ad5df
    • Jens Axboe's avatar
      Revert "blkdev: fix merge_bvec_fn return value checks" · 9599945b
      Jens Axboe authored
      This reverts commit 9f7cdbc3.
      
      It's causing oopses om dm setups, so revert it until we investigate.
      Reported-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Tested-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      9599945b
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 · b7f3a209
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6:
        sparc: Support show_unhandled_signals.
        sparc: use __ratelimit
        sunxvr500: Additional PCI id for sunxvr500 driver
        sparc: use asm-generic/scatterlist.h
        sparc64: If 'slot-names' property exist, create sysfs PCI slot information.
        sparc: remove trailing space in messages
        sparc: remove redundant return statements
      b7f3a209