1. 01 12月, 2009 1 次提交
    • J
      mac80211: fix spurious delBA handling · 827d42c9
      Johannes Berg 提交于
      Lennert Buytenhek noticed that delBA handling in mac80211
      was broken and has remotely triggerable problems, some of
      which are due to some code shuffling I did that ended up
      changing the order in which things were done -- this was
      
        commit d75636ef
        Author: Johannes Berg <johannes@sipsolutions.net>
        Date:   Tue Feb 10 21:25:53 2009 +0100
      
          mac80211: RX aggregation: clean up stop session
      
      and other parts were already present in the original
      
        commit d92684e6
        Author: Ron Rindjunsky <ron.rindjunsky@intel.com>
        Date:   Mon Jan 28 14:07:22 2008 +0200
      
            mac80211: A-MPDU Tx add delBA from recipient support
      
      The first problem is that I moved a BUG_ON before various
      checks -- thereby making it possible to hit. As the comment
      indicates, the BUG_ON can be removed since the ampdu_action
      callback must already exist when the state is != IDLE.
      
      The second problem isn't easily exploitable but there's a
      race condition due to unconditionally setting the state to
      OPERATIONAL when a delBA frame is received, even when no
      aggregation session was ever initiated. All the drivers
      accept stopping the session even then, but that opens a
      race window where crashes could happen before the driver
      accepts it. Right now, a WARN_ON may happen with non-HT
      drivers, while the race opens only for HT drivers.
      
      For this case, there are two things necessary to fix it:
       1) don't process spurious delBA frames, and be more careful
          about the session state; don't drop the lock
      
       2) HT drivers need to be prepared to handle a session stop
          even before the session was really started -- this is
          true for all drivers (that support aggregation) but
          iwlwifi which can be fixed easily. The other HT drivers
          (ath9k and ar9170) are behaving properly already.
      Reported-by: NLennert Buytenhek <buytenh@marvell.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      827d42c9
  2. 30 11月, 2009 7 次提交
  3. 29 11月, 2009 6 次提交
    • D
      pcmcia: rework the irq_req_t typedef · 5fa9167a
      Dominik Brodowski 提交于
      Most of the irq_req_t typedef'd struct can be re-worked quite
      easily:
      
      (1) IRQInfo2 was unused in any case, so drop it.
      
      (2) IRQInfo1 was used write-only, so drop it.
      
      (3) Instance (private data to be passed to the IRQ handler):
      	Most PCMCIA drivers using pcmcia_request_irq() to actually
      	register an IRQ handler set the "dev_id" to the same pointer
      	as the "priv" pointer in struct pcmcia_device. Modify the two
      	exceptions (ipwireless, ibmtr_cs) to also work this waym and
      	set the IRQ handler's "dev_id" to p_dev->priv unconditionally.
      
      (4) Handler is to be of type irq_handler_t.
      
      (5) Handler != NULL already tells whether an IRQ handler is present.
      	Therefore, we do not need the IRQ_HANDLER_PRESENT flag in
      	irq_req_t.Attributes.
      
      CC: netdev@vger.kernel.org
      CC: linux-bluetooth@vger.kernel.org
      CC: linux-ide@vger.kernel.org
      CC: linux-wireless@vger.kernel.org
      CC: linux-scsi@vger.kernel.org
      CC: alsa-devel@alsa-project.org
      CC: Jaroslav Kysela <perex@perex.cz>
      CC: Jiri Kosina <jkosina@suse.cz>
      CC: Karsten Keil <isdn@linux-pingi.de>
      for the Bluetooth parts: Acked-by: Marcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      5fa9167a
    • D
      pcmcia: remove deprecated handle_to_dev() macro · dd2e5a15
      Dominik Brodowski 提交于
      Update remaining users and remove deprecated handle_to_dev() macro
      
      CC: Harald Welte <laforge@gnumonks.org>
      CC: netdev@vger.kernel.org
      CC: linux-wireless@vger.kernel.org
      CC: linux-serial@vger.kernel.org
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      dd2e5a15
    • D
      pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer · 6838b03f
      Dominik Brodowski 提交于
      pcmcia_request_window() only needs a pointer to struct pcmcia_device, not
      a pointer to a pointer.
      
      CC: netdev@vger.kernel.org
      CC: linux-wireless@vger.kernel.org
      CC: linux-scsi@vger.kernel.org
      CC: Jiri Kosina <jkosina@suse.cz>
      Acked-by: Karsten Keil <keil@b1-systems.de> (for ISDN)
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      6838b03f
    • M
      pcmcia: Change window_handle_t logic to unsigned long · 0bdf9b3d
      Magnus Damm 提交于
      Logic changes based on top of the other patches:
      
      This set of patches changed window_handle_t from being a pointer to an
      unsigned long. The unsigned long is now a simple index into socket->win[].
      Going from a pointer to unsigned long should leave the user space interface
      unchanged unless I'm mistaken.
      
      This change results in code that is less error prone and a user space
      interface which is much cleaner and safer. A nice side effect is that we
      are also are able to remove all members except one from window_t.
      
      [ linux@dominikbrodowski.net:
      	Update to 2.6.31. Also, a plain "index" to socket->win[] does not
      	work, as several codepaths rely on "window_handle_t" being
      	non-zero if used. Therefore, set the window_handle_t to the
      	socket->win[] index + 1. ]
      
      CC: netdev@vger.kernel.org
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      0bdf9b3d
    • M
      pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page() · 868575d1
      Magnus Damm 提交于
      No logic changes, just pass struct pcmcia_device to pcmcia_map_mem_page()
      
      [linux@dominikbrodowski.net: update to 2.6.31]
      CC: netdev@vger.kernel.org
      CC: linux-wireless@vger.kernel.org
      CC: linux-scsi@vger.kernel.org
      CC: Jiri Kosina <jkosina@suse.cz>
      Acked-by: Karsten Keil <keil@b1-systems.de> (for ISDN)
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      868575d1
    • M
      pcmcia: Pass struct pcmcia_device to pcmcia_release_window() · f5560da5
      Magnus Damm 提交于
      No logic changes, just pass struct pcmcia_device to pcmcia_release_window().
      
      [linux@dominikbrodowski.net: update to 2.6.31]
      CC: netdev@vger.kernel.org
      CC: Jiri Kosina <jkosina@suse.cz>
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      f5560da5
  4. 24 11月, 2009 6 次提交
  5. 23 11月, 2009 1 次提交
  6. 22 11月, 2009 3 次提交
  7. 21 11月, 2009 11 次提交
  8. 20 11月, 2009 1 次提交
  9. 18 11月, 2009 2 次提交
  10. 17 11月, 2009 2 次提交