1. 03 5月, 2012 8 次提交
    • G
      sungem: Fix WakeOnLan · 5a8887d3
      Gerard Lledo 提交于
      WakeOnLan was broken in this driver because gp->asleep_wol is a 1-bit
      bitfield and it was being assigned WAKE_MAGIC, which is (1 << 5).
      gp->asleep_wol remains 0 and the machine never wakes up.  Fixed by casting
      gp->wake_on_lan to bool.  Tested on an iBook G4.
      Signed-off-by: NGerard Lledo <gerard.lledo@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a8887d3
    • E
      tcp: change tcp_adv_win_scale and tcp_rmem[2] · b49960a0
      Eric Dumazet 提交于
      tcp_adv_win_scale default value is 2, meaning we expect a good citizen
      skb to have skb->len / skb->truesize ratio of 75% (3/4)
      
      In 2.6 kernels we (mis)accounted for typical MSS=1460 frame :
      1536 + 64 + 256 = 1856 'estimated truesize', and 1856 * 3/4 = 1392.
      So these skbs were considered as not bloated.
      
      With recent truesize fixes, a typical MSS=1460 frame truesize is now the
      more precise :
      2048 + 256 = 2304. But 2304 * 3/4 = 1728.
      So these skb are not good citizen anymore, because 1460 < 1728
      
      (GRO can escape this problem because it build skbs with a too low
      truesize.)
      
      This also means tcp advertises a too optimistic window for a given
      allocated rcvspace : When receiving frames, sk_rmem_alloc can hit
      sk_rcvbuf limit and we call tcp_prune_queue()/tcp_collapse() too often,
      especially when application is slow to drain its receive queue or in
      case of losses (netperf is fast, scp is slow). This is a major latency
      source.
      
      We should adjust the len/truesize ratio to 50% instead of 75%
      
      This patch :
      
      1) changes tcp_adv_win_scale default to 1 instead of 2
      
      2) increase tcp_rmem[2] limit from 4MB to 6MB to take into account
      better truesize tracking and to allow autotuning tcp receive window to
      reach same value than before. Note that same amount of kernel memory is
      consumed compared to 2.6 kernels.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Acked-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b49960a0
    • S
      net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg · 84768edb
      Sasha Levin 提交于
      l2tp_ip_sendmsg could return without releasing socket lock, making it all the
      way to userspace, and generating the following warning:
      
      [  130.891594] ================================================
      [  130.894569] [ BUG: lock held when returning to user space! ]
      [  130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G        W
      [  130.900336] ------------------------------------------------
      [  130.902996] trinity/8384 is leaving the kernel with locks still held!
      [  130.906106] 1 lock held by trinity/8384:
      [  130.907924]  #0:  (sk_lock-AF_INET){+.+.+.}, at: [<ffffffff82b9503f>] l2tp_ip_sendmsg+0x2f/0x550
      
      Introduced by commit 2f16270f ("l2tp: Fix locking in l2tp_ip.c").
      Signed-off-by: NSasha Levin <levinsasha928@gmail.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      84768edb
    • N
      drop_monitor: prevent init path from scheduling on the wrong cpu · 4fdcfa12
      Neil Horman 提交于
      I just noticed after some recent updates, that the init path for the drop
      monitor protocol has a minor error.  drop monitor maintains a per cpu structure,
      that gets initalized from a single cpu.  Normally this is fine, as the protocol
      isn't in use yet, but I recently made a change that causes a failed skb
      allocation to reschedule itself .  Given the current code, the implication is
      that this workqueue reschedule will take place on the wrong cpu.  If drop
      monitor is used early during the boot process, its possible that two cpus will
      access a single per-cpu structure in parallel, possibly leading to data
      corruption.
      
      This patch fixes the situation, by storing the cpu number that a given instance
      of this per-cpu data should be accessed from.  In the case of a need for a
      reschedule, the cpu stored in the struct is assigned the rescheule, rather than
      the currently executing cpu
      
      Tested successfully by myself.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      CC: David Miller <davem@davemloft.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4fdcfa12
    • T
      usbnet: fix failure handling in usbnet_probe · a4723848
      tom.leiming@gmail.com 提交于
      If register_netdev returns failure, the dev->interrupt and
      its transfer buffer should be released, so just fix it.
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a4723848
    • T
      usbnet: fix leak of transfer buffer of dev->interrupt · 720f3d7c
      tom.leiming@gmail.com 提交于
      The transfer buffer of dev->interrupt is allocated in .probe path,
      but not freed in .disconnet path, so mark the interrupt URB as
      URB_FREE_BUFFER to free the buffer when the URB is destroyed.
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Acked-by: NOliver Neukum <oneukum@suse.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      720f3d7c
    • J
      ucc_geth: Add 16 bytes to max TX frame for VLANs · 70f8002d
      Joakim Tjernlund 提交于
      Creating a VLAN interface on top of ucc_geth adds 4 bytes
      to the frame and the HW controller is not prepared to
      TX a frame bigger than 1518 bytes which is 4 bytes too
      small for a full VLAN frame. Add 16 bytes which will handle
      the a simple VLAN and leaves 12 bytes for future expansion.
      Signed-off-by: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      70f8002d
    • J
      net: ucc_geth, increase no. of HW RX descriptors · 5bbdc057
      Joakim Tjernlund 提交于
      In a busy network we see ucc_geth is dropping RX pkgs every now
      and then. Increase the RX queues HW descriptors from
      16 to 32 to deal with this.
      Signed-off-by: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5bbdc057
  2. 02 5月, 2012 4 次提交
  3. 01 5月, 2012 18 次提交
  4. 30 4月, 2012 4 次提交
  5. 28 4月, 2012 6 次提交
    • N
      drop_monitor: Make updating data->skb smp safe · 3885ca78
      Neil Horman 提交于
      Eric Dumazet pointed out to me that the drop_monitor protocol has some holes in
      its smp protections.  Specifically, its possible to replace data->skb while its
      being written.  This patch corrects that by making data->skb an rcu protected
      variable.  That will prevent it from being overwritten while a tracepoint is
      modifying it.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Reported-by: NEric Dumazet <eric.dumazet@gmail.com>
      CC: David Miller <davem@davemloft.net>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3885ca78
    • N
      drop_monitor: fix sleeping in invalid context warning · cde2e9a6
      Neil Horman 提交于
      Eric Dumazet pointed out this warning in the drop_monitor protocol to me:
      
      [   38.352571] BUG: sleeping function called from invalid context at kernel/mutex.c:85
      [   38.352576] in_atomic(): 1, irqs_disabled(): 0, pid: 4415, name: dropwatch
      [   38.352580] Pid: 4415, comm: dropwatch Not tainted 3.4.0-rc2+ #71
      [   38.352582] Call Trace:
      [   38.352592]  [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
      [   38.352599]  [<ffffffff81063f2a>] __might_sleep+0xca/0xf0
      [   38.352606]  [<ffffffff81655b16>] mutex_lock+0x26/0x50
      [   38.352610]  [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
      [   38.352616]  [<ffffffff810b72d9>] tracepoint_probe_register+0x29/0x90
      [   38.352621]  [<ffffffff8153a585>] set_all_monitor_traces+0x105/0x170
      [   38.352625]  [<ffffffff8153a8ca>] net_dm_cmd_trace+0x2a/0x40
      [   38.352630]  [<ffffffff8154a81a>] genl_rcv_msg+0x21a/0x2b0
      [   38.352636]  [<ffffffff810f8029>] ? zone_statistics+0x99/0xc0
      [   38.352640]  [<ffffffff8154a600>] ? genl_rcv+0x30/0x30
      [   38.352645]  [<ffffffff8154a059>] netlink_rcv_skb+0xa9/0xd0
      [   38.352649]  [<ffffffff8154a5f0>] genl_rcv+0x20/0x30
      [   38.352653]  [<ffffffff81549a7e>] netlink_unicast+0x1ae/0x1f0
      [   38.352658]  [<ffffffff81549d76>] netlink_sendmsg+0x2b6/0x310
      [   38.352663]  [<ffffffff8150824f>] sock_sendmsg+0x10f/0x130
      [   38.352668]  [<ffffffff8150abe0>] ? move_addr_to_kernel+0x60/0xb0
      [   38.352673]  [<ffffffff81515f04>] ? verify_iovec+0x64/0xe0
      [   38.352677]  [<ffffffff81509c46>] __sys_sendmsg+0x386/0x390
      [   38.352682]  [<ffffffff810ffaf9>] ? handle_mm_fault+0x139/0x210
      [   38.352687]  [<ffffffff8165b5bc>] ? do_page_fault+0x1ec/0x4f0
      [   38.352693]  [<ffffffff8106ba4d>] ? set_next_entity+0x9d/0xb0
      [   38.352699]  [<ffffffff81310b49>] ? tty_ldisc_deref+0x9/0x10
      [   38.352703]  [<ffffffff8106d363>] ? pick_next_task_fair+0x63/0x140
      [   38.352708]  [<ffffffff8150b8d4>] sys_sendmsg+0x44/0x80
      [   38.352713]  [<ffffffff8165f8e2>] system_call_fastpath+0x16/0x1b
      
      It stems from holding a spinlock (trace_state_lock) while attempting to register
      or unregister tracepoint hooks, making in_atomic() true in this context, leading
      to the warning when the tracepoint calls might_sleep() while its taking a mutex.
      Since we only use the trace_state_lock to prevent trace protocol state races, as
      well as hardware stat list updates on an rcu write side, we can just convert the
      spinlock to a mutex to avoid this problem.
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Reported-by: NEric Dumazet <eric.dumazet@gmail.com>
      CC: David Miller <davem@davemloft.net>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cde2e9a6
    • G
      wl1251: fix crash on remove due to leftover work item · 4c1bcdb5
      Grazvydas Ignotas 提交于
      This driver currently leaves elp_work behind when stopping, which
      occasionally results in data corruption because work function ends
      up accessing freed memory, typical symptoms of this are various
      worker_thread crashes. Fix it by cancelling elp_work.
      
      Cc: stable@vger.kernel.org # v2.6.37+
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4c1bcdb5
    • G
      wl1251: fix crash on remove due to premature kfree · 328c32f0
      Grazvydas Ignotas 提交于
      Currently SDIO glue frees it's own structure before calling
      wl1251_free_hw(), which in turn calls ieee80211_unregister_hw().
      The later call may result in a need to communicate with the chip
      to stop it (as it happens now if the interface is still up before
      rmmod), which means calls are made back to the glue, resulting in
      freed memory access.
      
      Fix this by freeing glue data last.
      
      Cc: stable@vger.kernel.org # v2.6.37+
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      328c32f0
    • S
      b43: only reload config after successful initialization · dbdedbdf
      Seth Forshee 提交于
      Commit 2a190322 (b43: reload phy and bss settings after core restarts)
      introduced an unconditional call to b43_op_config() at the end of
      b43_op_start(). When firmware fails to load this can wedge the system.
      There's no need to reload the configuration after a failed
      initialization anyway, so only make the call if initialization was
      successful.
      
      BugLink: http://bugs.launchpad.net/bugs/950295
      Cc: Felix Fietkau <nbd@openwrt.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      dbdedbdf
    • W
      iwlwifi: use 6000G2B for 6030 device series · 1ed2ec37
      Wey-Yi Guy 提交于
      "iwlwifi: use correct released ucode version" change
      the ucode api ok from 6000G2 to 6000G2B, but it shall belong
      to 6030 device series, not the 6005 device series. Fix it
      
      Cc: stable@vger.kernel.org #3.3+
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1ed2ec37