1. 06 3月, 2010 9 次提交
  2. 04 3月, 2010 15 次提交
    • J
      rndis_wlan: correct multicast_list handling V3 · 12c3400a
      Jiri Pirko 提交于
      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: NJiri Pirko <jpirko@redhat.com>
      Reported-by: NJussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      12c3400a
    • D
      MAINTAINERS: Add netdev to bridge entry. · 4c325313
      David S. Miller 提交于
      Noticed by Ingo Molnar.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4c325313
    • D
      cxgb3: fix hot plug removal crash · a6f018e3
      Divy Le Ray 提交于
      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: NDivy Le Ray <divy@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6f018e3
    • A
      gianfar: Fix TX ring processing on SMP machines · 0eddba52
      Anton Vorontsov 提交于
      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: NMartyn Welch <martyn.welch@ge.com>
      Bisected-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Tested-by: NMartyn Welch <martyn.welch@ge.com>
      Cc: Sandeep Gopalpet <Sandeep.Kumar@freescale.com>
      Cc: Stable <stable@vger.kernel.org> [2.6.33]
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0eddba52
    • D
      r8169: use correct barrier between cacheable and non-cacheable memory · 4c020a96
      David Dillow 提交于
      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: NDavid Dillow <dave@thedillows.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4c020a96
    • N
      tipc: Fix oops on send prior to entering networked mode (v3) · d0021b25
      Neil Horman 提交于
      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: NNeil 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: NDavid S. Miller <davem@davemloft.net>
      d0021b25
    • T
      gre: fix hard header destination address checking · 6d55cb91
      Timo Teräs 提交于
      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: NTimo Teras <timo.teras@iki.fi>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6d55cb91
    • M
      net: add scheduler sync hint to tcp_prequeue(). · c839d30a
      Mike Galbraith 提交于
      Decreases the odds wakee will suffer from frequent cache misses.
      Signed-off-by: NMike Galbraith <efault@gmx.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c839d30a
    • S
      IPv6: fix race between cleanup and add/delete address · 8f37ada5
      stephen hemminger 提交于
      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: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8f37ada5
    • S
      IPv6: addrconf notify when address is unavailable · 84e8b803
      stephen hemminger 提交于
      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: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      84e8b803
    • S
      IPv6: addrconf timer race · 5b2a1953
      stephen hemminger 提交于
      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: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5b2a1953
    • S
      IPv6: addrconf dad timer unnecessary bh_disable · 122e4519
      stephen hemminger 提交于
      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: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      122e4519
    • D
    • H
      rt2x00: Export rt2x00soc_probe from rt2x00soc · 31f66be4
      Helmut Schaa 提交于
      Export rt2x00soc_probe from rt2x00soc as it is used in rt2800pci.
      
      Otherwise loading rt2800pci gives "rt2800pci: Unknown symbol
      rt2x00soc_probe".
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      31f66be4
    • S
      mac80211: Fix HT rate control configuration · 4fa00437
      Sujith 提交于
      Handling HT configuration changes involved setting the channel
      with the new HT parameters and then issuing a rate_update()
      notification to the driver.
      
      This behavior changed after the off-channel changes. Now, the channel
      is not updated with the new HT params in enable_ht() - instead, it
      is now done when the scan work terminates. This results in the driver
      depending on stale information, defaulting to non-HT mode always.
      
      Fix this by passing the new channel type to the driver.
      
      Cc: stable@kernel.org
      Signed-off-by: NSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4fa00437
  3. 03 3月, 2010 16 次提交
    • R
      bridge: depends on INET · 1cd4efdd
      Randy Dunlap 提交于
      br_multicast calls ip_send_check(), so it should depend on INET.
      
      built-in:
      br_multicast.c:(.text+0x88cf4): undefined reference to `ip_send_check'
      
      or modular:
      ERROR: "ip_send_check" [net/bridge/bridge.ko] undefined!
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1cd4efdd
    • V
      bnx2x: Removed FW 5.2.7 · 4d63cb4d
      Vladislav Zolotarov 提交于
      Removed FW 5.2.7.
      Signed-off-by: NVladislav Zolotarov <vladz@broadcom.com>
      Signed-off-by: NEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4d63cb4d
    • D
      davinci_emac: off by one · 4d27b877
      Dan Carpenter 提交于
      This off by one error was found by smatch.
      
      drivers/net/davinci_emac.c +2390 emac_dev_open(13) error: buffer overflow 'priv->mac_addr' 6 <= 6
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4d27b877
    • D
      cassini: fix off by one · bf829370
      Dan Carpenter 提交于
      There are only 6 link_modes.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bf829370
    • M
      Bluetooth: Use single_open() for inquiry cache within debugfs · d4612cb8
      Marcel Holtmann 提交于
      The inquiry cache information in debugfs should be using seq_file support
      and not allocating memory on the stack for the string. Since the usage of
      these information is really seldom, using single_open() for it is good
      enough.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d4612cb8
    • J
      af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del] · 1162563f
      Jiri Pirko 提交于
      My previous patch 914c8ad2 incorrectly changed
      the length check in packet_mc_add to be more strict. The problem is that
      userspace is not filling this field (and it stays zeroed) in case of setting
      PACKET_MR_PROMISC or PACKET_MR_ALLMULTI. So move the strict check to the point
      in path where the addr_len must be set correctly.
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      Reported-by: NPavel Roskin <proski@gnu.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1162563f
    • S
      be2net: download NCSI section during firmware update · 9fe96934
      Sarveshwar Bandi 提交于
      Adding code to update NCSI section while updating firmware on the controller.
      Signed-off-by: NSarveshwar Bandi <sarveshwarb@serverengines.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9fe96934
    • D
      cpmac: use after free · 48a29516
      Dan Carpenter 提交于
      The original code dereferenced "cpmac_mii" after calling
      "mdiobus_free(cpmac_mii);"
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Reviewed-by: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      48a29516
    • H
      ipsec: Fix bogus bundle flowi · 87c1e12b
      Herbert Xu 提交于
      When I merged the bundle creation code, I introduced a bogus
      flowi value in the bundle.  Instead of getting from the caller,
      it was instead set to the flow in the route object, which is
      totally different.
      
      The end result is that the bundles we created never match, and
      we instead end up with an ever growing bundle list.
      
      Thanks to Jamal for find this problem.
      Reported-by: NJamal Hadi Salim <hadi@cyberus.ca>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Acked-by: NSteffen Klassert <steffen.klassert@secunet.com>
      Acked-by: NJamal Hadi Salim <hadi@cyberus.ca>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      87c1e12b
    • J
      iwlwifi: load firmware asynchronously before mac80211 registration · b08dfd04
      Johannes Berg 提交于
      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: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b08dfd04
    • J
      ar9170: load firmware asynchronously · 53576517
      Johannes Berg 提交于
      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: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      53576517
    • H
      rt2x00: fix rt2800pci compilation with SoC · 6e93d719
      Helmut Schaa 提交于
      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: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6e93d719
    • B
      rt2x00: Add USB ID for CEIVA adapter to rt73usb · 51b2853f
      Bryan Polk 提交于
      This adds support for CEIVA USB wireless adapters to the rt73usb driver.
      Signed-off-by: NBryan Polk <sainth@eidolons.org>
      Acked-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      51b2853f
    • J
      mac80211: Fix reassociation processing (within ESS roaming) · 9c87ba67
      Jouni Malinen 提交于
      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: NJouni Malinen <j@w1.fi>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9c87ba67
    • M
      ath9k: fix lockdep warning when unloading module · a9f042cb
      Ming Lei 提交于
      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: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a9f042cb
    • D
      zd1211rw: fix potential array underflow · 86baf712
      Dan Carpenter 提交于
      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: NDan Carpenter <error27@gmail.com>
      Acked-by: NBenoit Papillault <benoit.papillault@free.fr>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      86baf712