1. 23 Sep, 2010 2 commits
  2. 22 Sep, 2010 9 commits
  3. 21 Sep, 2010 4 commits
  4. 20 Sep, 2010 6 commits
  5. 18 Sep, 2010 2 commits
  6. 17 Sep, 2010 9 commits
  7. 16 Sep, 2010 1 commit
  8. 15 Sep, 2010 3 commits
    • Denis Kirjanov's avatar
      3c59x: Remove atomic context inside vortex_{set|get}_wol · 84176b7b
      Denis Kirjanov authored
      There is no need to use spinlocks in vortex_{set|get}_wol.
      This also fixes a bug:
      [  254.214993] 3c59x 0000:00:0d.0: PME# enabled
      [  254.215021] BUG: sleeping function called from invalid context at kernel/mutex.c:94
      [  254.215030] in_atomic(): 0, irqs_disabled(): 1, pid: 4875, name: ethtool
      [  254.215042] Pid: 4875, comm: ethtool Tainted: G        W   2.6.36-rc3+ #7
      [  254.215049] Call Trace:
      [  254.215050]  [] __might_sleep+0xb1/0xb6
      [  254.215050]  [] mutex_lock+0x17/0x30
      [  254.215050]  [] acpi_enable_wakeup_device_power+0x2b/0xb1
      [  254.215050]  [] acpi_pm_device_sleep_wake+0x42/0x7f
      [  254.215050]  [] acpi_pci_sleep_wake+0x5d/0x63
      [  254.215050]  [] platform_pci_sleep_wake+0x1d/0x20
      [  254.215050]  [] __pci_enable_wake+0x90/0xd0
      [  254.215050]  [] acpi_set_WOL+0x8e/0xf5 [3c59x]
      [  254.215050]  [] vortex_set_wol+0x4e/0x5e [3c59x]
      [  254.215050]  [] dev_ethtool+0x1cf/0xb61
      [  254.215050]  [] ? debug_mutex_free_waiter+0x45/0x4a
      [  254.215050]  [] ? __mutex_lock_common+0x204/0x20e
      [  254.215050]  [] ? __mutex_lock_slowpath+0x12/0x15
      [  254.215050]  [] ? mutex_lock+0x23/0x30
      [  254.215050]  [] dev_ioctl+0x42c/0x533
      [  254.215050]  [] ? _cond_resched+0x8/0x1c
      [  254.215050]  [] ? lock_page+0x1c/0x30
      [  254.215050]  [] ? page_address+0x15/0x7c
      [  254.215050]  [] ? filemap_fault+0x187/0x2c4
      [  254.215050]  [] sock_ioctl+0x1d4/0x1e0
      [  254.215050]  [] ? sock_ioctl+0x0/0x1e0
      [  254.215050]  [] vfs_ioctl+0x19/0x33
      [  254.215050]  [] do_vfs_ioctl+0x424/0x46f
      [  254.215050]  [] ? selinux_file_ioctl+0x3c/0x40
      [  254.215050]  [] sys_ioctl+0x40/0x5a
      [  254.215050]  [] sysenter_do_call+0x12/0x22
      
      vortex_set_wol protected with a spinlock, but nested  acpi_set_WOL acquires a mutex inside atomic context.
      Ethtool operations are already serialized by RTNL mutex, so it is safe to drop the locks.
      Signed-off-by: default avatarDenis Kirjanov <dkirjanov@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84176b7b
    • Alexey Kuznetsov's avatar
      tcp: Prevent overzealous packetization by SWS logic. · 01f83d69
      Alexey Kuznetsov authored
      If peer uses tiny MSS (say, 75 bytes) and similarly tiny advertised
      window, the SWS logic will packetize to half the MSS unnecessarily.
      
      This causes problems with some embedded devices.
      
      However for large MSS devices we do want to half-MSS packetize
      otherwise we never get enough packets into the pipe for things
      like fast retransmit and recovery to work.
      
      Be careful also to handle the case where MSS > window, otherwise
      we'll never send until the probe timer.
      Reported-by: default avatarツ Leandro Melo de Sales <leandroal@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01f83d69
    • David S. Miller's avatar
      net: RPS needs to depend upon USE_GENERIC_SMP_HELPERS · 6dcbc122
      David S. Miller authored
      You cannot invoke __smp_call_function_single() unless the
      architecture sets this symbol.
      Reported-by: default avatarDaniel Hellstrom <daniel@gaisler.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6dcbc122
  9. 14 Sep, 2010 4 commits
    • Simon Guinot's avatar
      phylib: fix PAL state machine restart on resume · fddd9101
      Simon Guinot authored
      On resume, before starting the PAL state machine, check if the
      adjust_link() method is well supplied. If not, this would lead to a
      NULL pointer dereference in the phy_state_machine() function.
      
      This scenario can happen if the Ethernet driver call manually the PHY
      functions instead of using the PAL state machine. The mv643xx_eth driver
      is a such example.
      Signed-off-by: default avatarSimon Guinot <sguinot@lacie.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fddd9101
    • Eric Dumazet's avatar
      net: use rcu_barrier() in rollback_registered_many · ef885afb
      Eric Dumazet authored
      netdev_wait_allrefs() waits that all references to a device vanishes.
      
      It currently uses a _very_ pessimistic 250 ms delay between each probe.
      Some users reported that no more than 4 devices can be dismantled per
      second, this is a pretty serious problem for some setups.
      
      Most of the time, a refcount is about to be released by an RCU callback,
      that is still in flight because rollback_registered_many() uses a
      synchronize_rcu() call instead of rcu_barrier(). Problem is visible if
      number of online cpus is one, because synchronize_rcu() is then a no op.
      
      time to remove 50 ipip tunnels on a UP machine :
      
      before patch : real 11.910s
      after patch : real 1.250s
      Reported-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Reported-by: default avatarOctavian Purdila <opurdila@ixiacom.com>
      Reported-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ef885afb
    • Andy Gospodarek's avatar
      bonding: correctly process non-linear skbs · ab12811c
      Andy Gospodarek authored
      It was recently brought to my attention that 802.3ad mode bonds would no
      longer form when using some network hardware after a driver update.
      After snooping around I realized that the particular hardware was using
      page-based skbs and found that skb->data did not contain a valid LACPDU
      as it was not stored there.  That explained the inability to form an
      802.3ad-based bond.  For balance-alb mode bonds this was also an issue
      as ARPs would not be properly processed.
      
      This patch fixes the issue in my tests and should be applied to 2.6.36
      and as far back as anyone cares to add it to stable.
      
      Thanks to Alexander Duyck <alexander.h.duyck@intel.com> and Jesse
      Brandeburg <jesse.brandeburg@intel.com> for the suggestions on this one.
      Signed-off-by: default avatarAndy Gospodarek <andy@greyhouse.net>
      CC: Alexander Duyck <alexander.h.duyck@intel.com>
      CC: Jesse Brandeburg <jesse.brandeburg@intel.com>
      CC: stable@kerne.org
      Signed-off-by: default avatarJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ab12811c
    • Michael S. Tsirkin's avatar
      vhost-net: fix range checking in mrg bufs case · ee05d693
      Michael S. Tsirkin authored
      In mergeable buffer case, we use headcount, log_num
      and seg as indexes in same-size arrays, and
      we know that headcount <= seg and
      log_num equals either 0 or seg.
      
      Therefore, the right thing to do is range-check seg,
      not headcount as we do now: these will be different
      if guest chains s/g descriptors (this does not
      happen now, but we can not trust the guest).
      
      Long term, we should add BUG_ON checks to verify
      two other indexes are what we think they should be.
      Reported-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      ee05d693