1. 29 Jun, 2008 1 commit
  2. 28 Jun, 2008 28 commits
  3. 27 Jun, 2008 11 commits
    • Emmanuel Grumbach's avatar
      mac80211: fix an oops in several failure paths in key allocation · 00eb7fe7
      Emmanuel Grumbach authored
      This patch fixes an oops in several failure paths in key allocation. This
      Oops occurs when freeing a key that has not been linked yet, so the
      key->sdata is not set.
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      00eb7fe7
    • Harvey Harrison's avatar
      prism: islpci_eth.c endianness fix · 5f4a6fae
      Harvey Harrison authored
      clock is already cpu-endian (see le32_to_cpu slightly before), so
      le64_to_cpu doesn't make much sense.
      Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5f4a6fae
    • Ivo van Doorn's avatar
      rt2x00: Fix lock dependency errror · 980dfcb9
      Ivo van Doorn authored
      This fixes a circular locking dependency in the workqueue handling.
      The interface work task uses the mac80211 function
      ieee80211_iterate_active_interfaces() which grabs the RTNL lock.
      
      However when the interface is brough down, this happens under the RTNL
      lock as well, this causes problems because mac80211 will flush the workqueue
      during the ifdown event. This causes mac80211 to wait until the driver has
      completed all work which can't finish because it is waiting on the RTNL lock.
      
      This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
      this workqueue can be flushed when the ieee80211_hw structure is removed
      by the driver (when the driver is unloaded) which does not happen under the
      RTNL lock.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      980dfcb9
    • David S. Miller's avatar
    • Ben Hutchings's avatar
      Hold RTNL while calling dev_close() · 3e3cda96
      Ben Hutchings authored
      dev_close() must be called holding the RTNL.  Compile-tested only.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      3e3cda96
    • Ben Hutchings's avatar
      qla3xxx: Hold RTNL while calling dev_close() · c81ec80b
      Ben Hutchings authored
      dev_close() must be called holding the RTNL.  Compile-tested only.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      c81ec80b
    • Andi Kleen's avatar
      [netdrvr] Fix IOMMU overflow checking in s2io.c · 64c42f69
      Andi Kleen authored
      s2io has IOMMU overflow checking, but unfortunately it is wrong.
      
      It didn't use the standard macros, which meant that it only worked
      on POWER and SPARC because only those define DMA_ERROR_CODE. Convert it to
      use the standard macros instead.
      
      I also commented two more bugs in the IOMMU handling. It assumes
      that 0 DMA addresses cannot happen, but that's not true in all IOMMU setups.
      The information if a buffer has been already mapped needs to be stored
      elsewhere.
      
      Didn't fix those because it needs careful checking of the buffer handling
      by the maintainers.
      
      Cc: ram.vepa@neterion.com
      Cc: santosh.rastapur@neterion.com
      Cc: sivakumar.subramani@neterion.com
      Cc: sreenivasa.honnur@neterion.com
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      64c42f69
    • Andy Gospodarek's avatar
      e1000: only enable TSO6 via ethtool when using correct hardware · 581abbc2
      Andy Gospodarek authored
      When enabling TSO via ethool on e1000, it is possible to set
      NETIF_F_TSO6 on hardware that does not support it.  Setting TSO via
      ethtool now matches the settings used when the hardware is probed.
      Signed-off-by: default avatarAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      581abbc2
    • Kevin Hao's avatar
      e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx · 1923815d
      Kevin Hao authored
      The E100 device can't work on current kernel (2.6.26-rc6) and will cause
      kernel corruption on intel ixdp4xx.
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      1923815d
    • Al Viro's avatar
      [netdrvr] netxen: fix netxen_pci_tbl[] breakage · 70081ac5
      Al Viro authored
      	PCI_DEVICE_CLASS sets .device and .vendor to PCI_ANY_DEV,
      which overrides the effect of preceding PCI_DEVICE() and makes
      all elements of netxen_pci_tbl[] identical.  Introduced in the
      commit dcd56fdb.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      70081ac5
    • Ingo Molnar's avatar
      [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable · c5643cab
      Ingo Molnar authored
      Original Author: Michael Buesch <mb@bu3sch.de>
      
      net, vortex: fix lockup
      
      Ingo Molnar reported:
      
      -tip testing found that Johannes Berg's "softirq: remove irqs_disabled
      warning from local_bh_enable" enhancement to lockdep triggers a new
      warning on an old testbox that uses 3c59x vortex and netlogging:
      
      ----->
          calling  vortex_init+0x0/0xb0
          PCI: Found IRQ 10 for device 0000:00:0b.0
          PCI: Sharing IRQ 10 with 0000:00:0a.0
          PCI: Sharing IRQ 10 with 0000:00:0b.1
          3c59x: Donald Becker and others.
          0000:00:0b.0: 3Com PCI 3c556 Laptop Tornado at e0800400.
          PCI: Enabling bus mastering for device 0000:00:0b.0
          initcall vortex_init+0x0/0xb0 returned 0 after 47 msecs
      ...
          calling  init_netconsole+0x0/0x1b0
          netconsole: local port 4444
          netconsole: local IP 10.0.1.9
          netconsole: interface eth0
          netconsole: remote port 4444
          netconsole: remote IP 10.0.1.16
          netconsole: remote ethernet address 00:19:xx:xx:xx:xx
          netconsole: device eth0 not up yet, forcing it
          eth0:  setting half-duplex.
          eth0:  setting full-duplex.
      ------------[ cut here ]------------
          WARNING: at kernel/softirq.c:137 local_bh_enable_ip+0xd1/0xe0()
          Pid: 1, comm: swapper Not tainted 2.6.26-rc6-tip #2091
           [<c0125ecf>] warn_on_slowpath+0x4f/0x70
           [<c0126834>] ? release_console_sem+0x1b4/0x1d0
           [<c0126d00>] ? vprintk+0x2a0/0x450
           [<c012fde5>] ? __mod_timer+0xa5/0xc0
           [<c046f7fd>] ? mdio_sync+0x3d/0x50
           [<c0160ef6>] ? marker_probe_cb+0x46/0xa0
           [<c0126ed7>] ? printk+0x27/0x50
           [<c046f4c3>] ? vortex_set_duplex+0x43/0xc0
           [<c046f521>] ? vortex_set_duplex+0xa1/0xc0
           [<c0471b92>] ? vortex_timer+0xe2/0x3e0
           [<c012b361>] local_bh_enable_ip+0xd1/0xe0
           [<c08d9f9f>] _spin_unlock_bh+0x2f/0x40
           [<c0471b92>] vortex_timer+0xe2/0x3e0
           [<c014743b>] ? trace_hardirqs_on+0xb/0x10
           [<c0147358>] ? trace_hardirqs_on_caller+0x88/0x160
           [<c012f8b2>] run_timer_softirq+0x162/0x1c0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c012b361>] local_bh_enable_ip+0xd1/0xe0
           [<c08d9f9f>] _spin_unlock_bh+0x2f/0x40
           [<c0471b92>] vortex_timer+0xe2/0x3e0
           [<c014743b>] ? trace_hardirqs_on+0xb/0x10
           [<c0147358>] ? trace_hardirqs_on_caller+0x88/0x160
           [<c012f8b2>] run_timer_softirq+0x162/0x1c0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c012b60a>] __do_softirq+0x9a/0x160
           [<c012b570>] ? __do_softirq+0x0/0x160
           [<c0106775>] call_on_stack+0x15/0x30
           [<c012b4f5>] ? irq_exit+0x55/0x60
           [<c0106e85>] ? do_IRQ+0x85/0xd0
           [<c0147391>] ? trace_hardirqs_on_caller+0xc1/0x160
           [<c0104888>] ? common_interrupt+0x28/0x30
           [<c08d8ac8>] ? mutex_unlock+0x8/0x10
           [<c08d8180>] ? _cond_resched+0x10/0x30
           [<c07a3be7>] ? netpoll_setup+0x117/0x390
           [<c0cbfcfe>] ? init_netconsole+0x14e/0x1b0
           [<c013d539>] ? ktime_get+0x19/0x40
           [<c0c9bab2>] ? kernel_init+0x1b2/0x2c0
           [<c0cbfbb0>] ? init_netconsole+0x0/0x1b0
           [<c0396aa4>] ? trace_hardirqs_on_thunk+0xc/0x10
           [<c0103f12>] ? restore_nocheck_notrace+0x0/0xe
           [<c0c9b900>] ? kernel_init+0x0/0x2c0
           [<c0c9b900>] ? kernel_init+0x0/0x2c0
           [<c0104aa7>] ? kernel_thread_helper+0x7/0x10
           =======================
      ---[ end trace 37f9c502aff112e0 ]---
          console [netcon0] enabled
          netconsole: network logging started
          initcall init_netconsole+0x0/0x1b0 returned 0 after 2914 msecs
      
      looking at the driver I think the bug is real and the fix actually
      is trivial.
      
      vp->lock is also taken in hardware IRQ context, so we _have_ to always
      use irqsafe locking. As we run in a timer with IRQs disabled,
      we can simply use spin_lock.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      c5643cab