1. 05 10月, 2009 1 次提交
    • E
      icmp: No need to call sk_write_space() · b3a5b6cc
      Eric Dumazet 提交于
      We can make icmp messages tx completion callback a litle bit faster.
      
      Setting SOCK_USE_WRITE_QUEUE sk flag tells sock_wfree() to
      not call sk_write_space() on a socket we know no thread is posssibly
      waiting for write space. (on per cpu kernel internal icmp sockets only)
      
      This avoids the sock_def_write_space() call and
      read_lock(&sk->sk_callback_lock)/read_unlock(&sk->sk_callback_lock) calls
      as well.
      
      We avoid three atomic ops.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3a5b6cc
  2. 15 9月, 2009 1 次提交
  3. 03 6月, 2009 2 次提交
  4. 03 3月, 2009 1 次提交
    • E
      netns: Fix icmp shutdown. · 6eb07772
      Eric W. Biederman 提交于
      Recently I had a kernel panic in icmp_send during a network namespace
      cleanup.  There were packets in the arp queue that failed to be sent
      and we attempted to generate an ICMP host unreachable message, but
      failed because icmp_sk_exit had already been called.
      
      The network devices are removed from a network namespace and their
      arp queues are flushed before we do attempt to shutdown subsystems
      so this error should have been impossible.
      
      It turns out icmp_init is using register_pernet_device instead
      of register_pernet_subsys.  Which resulted in icmp being shut down
      while we still had the possibility of packets in flight, making
      a nasty NULL pointer deference in interrupt context possible.
      
      Changing this to register_pernet_subsys fixes the problem in
      my testing.
      Signed-off-by: NEric W. Biederman <ebiederm@aristanetworks.com>
      Acked-by: NDenis V. Lunev <den@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6eb07772
  5. 23 2月, 2009 1 次提交
    • E
      netns: Fix icmp shutdown. · 959d2726
      Eric W. Biederman 提交于
      Recently I had a kernel panic in icmp_send during a network namespace
      cleanup.  There were packets in the arp queue that failed to be sent
      and we attempted to generate an ICMP host unreachable message, but
      failed because icmp_sk_exit had already been called.
      
      The network devices are removed from a network namespace and their
      arp queues are flushed before we do attempt to shutdown subsystems
      so this error should have been impossible.
      
      It turns out icmp_init is using register_pernet_device instead
      of register_pernet_subsys.  Which resulted in icmp being shut down
      while we still had the possibility of packets in flight, making
      a nasty NULL pointer deference in interrupt context possible.
      
      Changing this to register_pernet_subsys fixes the problem in
      my testing.
      Signed-off-by: NEric W. Biederman <ebiederm@aristanetworks.com>
      Acked-by: NDenis V. Lunev <den@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      959d2726
  6. 16 2月, 2009 1 次提交
  7. 26 11月, 2008 1 次提交
  8. 25 11月, 2008 1 次提交
    • E
      net: avoid a pair of dst_hold()/dst_release() in ip_append_data() · 2e77d89b
      Eric Dumazet 提交于
      We can reduce pressure on dst entry refcount that slowdown UDP transmit
      path on SMP machines. This pressure is visible on RTP servers when
      delivering content to mediagateways, especially big ones, handling
      thousand of streams. Several cpus send UDP frames to the same
      destination, hence use the same dst entry.
      
      This patch makes ip_append_data() eventually steal the refcount its
      callers had to take on the dst entry.
      
      This doesnt avoid all refcounting, but still gives speedups on SMP,
      on UDP/RAW transmit path
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2e77d89b
  9. 31 10月, 2008 1 次提交
  10. 29 10月, 2008 1 次提交
  11. 14 10月, 2008 1 次提交
  12. 23 8月, 2008 1 次提交
    • D
      icmp: icmp_sk() should not use smp_processor_id() in preemptible code · fdc0bde9
      Denis V. Lunev 提交于
      Pass namespace into icmp_xmit_lock, obtain socket inside and return
      it as a result for caller.
      
      Thanks Alexey Dobryan for this report:
      
      Steps to reproduce:
      
      	CONFIG_PREEMPT=y
      	CONFIG_DEBUG_PREEMPT=y
      	tracepath <something>
      
      BUG: using smp_processor_id() in preemptible [00000000] code: tracepath/3205
      caller is icmp_sk+0x15/0x30
      Pid: 3205, comm: tracepath Not tainted 2.6.27-rc4 #1
      
      Call Trace:
       [<ffffffff8031af14>] debug_smp_processor_id+0xe4/0xf0
       [<ffffffff80409405>] icmp_sk+0x15/0x30
       [<ffffffff8040a17b>] icmp_send+0x4b/0x3f0
       [<ffffffff8025a415>] ? trace_hardirqs_on_caller+0xd5/0x160
       [<ffffffff8025a4ad>] ? trace_hardirqs_on+0xd/0x10
       [<ffffffff8023a475>] ? local_bh_enable_ip+0x95/0x110
       [<ffffffff804285b9>] ? _spin_unlock_bh+0x39/0x40
       [<ffffffff8025a26c>] ? mark_held_locks+0x4c/0x90
       [<ffffffff8025a4ad>] ? trace_hardirqs_on+0xd/0x10
       [<ffffffff8025a415>] ? trace_hardirqs_on_caller+0xd5/0x160
       [<ffffffff803e91b4>] ip_fragment+0x8d4/0x900
       [<ffffffff803e7030>] ? ip_finish_output2+0x0/0x290
       [<ffffffff803e91e0>] ? ip_finish_output+0x0/0x60
       [<ffffffff803e6650>] ? dst_output+0x0/0x10
       [<ffffffff803e922c>] ip_finish_output+0x4c/0x60
       [<ffffffff803e92e3>] ip_output+0xa3/0xf0
       [<ffffffff803e68d0>] ip_local_out+0x20/0x30
       [<ffffffff803e753f>] ip_push_pending_frames+0x27f/0x400
       [<ffffffff80406313>] udp_push_pending_frames+0x233/0x3d0
       [<ffffffff804067d1>] udp_sendmsg+0x321/0x6f0
       [<ffffffff8040d155>] inet_sendmsg+0x45/0x80
       [<ffffffff803b967f>] sock_sendmsg+0xdf/0x110
       [<ffffffff8024a100>] ? autoremove_wake_function+0x0/0x40
       [<ffffffff80257ce5>] ? validate_chain+0x415/0x1010
       [<ffffffff8027dc10>] ? __do_fault+0x140/0x450
       [<ffffffff802597d0>] ? __lock_acquire+0x260/0x590
       [<ffffffff803b9e55>] ? sockfd_lookup_light+0x45/0x80
       [<ffffffff803ba50a>] sys_sendto+0xea/0x120
       [<ffffffff80428e42>] ? _spin_unlock_irqrestore+0x42/0x80
       [<ffffffff803134bc>] ? __up_read+0x4c/0xb0
       [<ffffffff8024e0c6>] ? up_read+0x26/0x30
       [<ffffffff8020b8bb>] system_call_fastpath+0x16/0x1b
      
      icmp6_sk() is similar.
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fdc0bde9
  13. 18 7月, 2008 2 次提交
  14. 15 7月, 2008 6 次提交
  15. 12 6月, 2008 1 次提交
  16. 29 4月, 2008 1 次提交
  17. 21 4月, 2008 2 次提交
  18. 14 4月, 2008 1 次提交
  19. 04 4月, 2008 2 次提交
  20. 26 3月, 2008 5 次提交
  21. 06 3月, 2008 1 次提交
  22. 01 3月, 2008 6 次提交