1. 14 12月, 2009 1 次提交
  2. 09 12月, 2009 6 次提交
  3. 04 12月, 2009 9 次提交
    • A
      tree-wide: fix assorted typos all over the place · af901ca1
      André Goddard Rosa 提交于
      That is "success", "unknown", "through", "performance", "[re|un]mapping"
      , "access", "default", "reasonable", "[con]currently", "temperature"
      , "channel", "[un]used", "application", "example","hierarchy", "therefore"
      , "[over|under]flow", "contiguous", "threshold", "enough" and others.
      Signed-off-by: NAndré Goddard Rosa <andre.goddard@gmail.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      af901ca1
    • E
      tcp: fix a timewait refcnt race · 47e1c323
      Eric Dumazet 提交于
      After TCP RCU conversion, tw->tw_refcnt should not be set to 1 in
      inet_twsk_alloc(). It allows a RCU reader to get this timewait socket,
      while we not yet stabilized it.
      
      Only choice we have is to set tw_refcnt to 0 in inet_twsk_alloc(),
      then atomic_add() it later, once everything is done.
      
      Location of this atomic_add() is tricky, because we dont want another
      writer to find this timewait in ehash, while tw_refcnt is still zero !
      
      Thanks to Kapil Dakhane tests and reports.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      47e1c323
    • E
      tcp: connect() race with timewait reuse · 13475a30
      Eric Dumazet 提交于
      Its currently possible that several threads issuing a connect() find
      the same timewait socket and try to reuse it, leading to list
      corruptions.
      
      Condition for bug is that these threads bound their socket on same
      address/port of to-be-find timewait socket, and connected to same
      target. (SO_REUSEADDR needed)
      
      To fix this problem, we could unhash timewait socket while holding
      ehash lock, to make sure lookups/changes will be serialized. Only
      first thread finds the timewait socket, other ones find the
      established socket and return an EADDRNOTAVAIL error.
      
      This second version takes into account Evgeniy's review and makes sure
      inet_twsk_put() is called outside of locked sections.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      13475a30
    • E
      tcp: diag: Dont report negative values for rx queue · 49d09007
      Eric Dumazet 提交于
      Both netlink and /proc/net/tcp interfaces can report transient
      negative values for rx queue.
      
      ss ->
      State   Recv-Q Send-Q  Local Address:Port  Peer Address:Port
      ESTAB   -6     6       127.0.0.1:45956     127.0.0.1:3333 
      
      netstat ->
      tcp   4294967290      6 127.0.0.1:37784  127.0.0.1:3333 ESTABLISHED
      
      This is because we dont lock socket while computing 
      tp->rcv_nxt - tp->copied_seq,
      and another CPU can update copied_seq before rcv_next in RX path.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      49d09007
    • E
      net: Batch inet_twsk_purge · b099ce26
      Eric W. Biederman 提交于
      This function walks the whole hashtable so there is no point in
      passing it a network namespace.  Instead I purge all timewait
      sockets from dead network namespaces that I find.  If the namespace
      is one of the once I am trying to purge I am guaranteed no new timewait
      sockets can be formed so this will get them all.  If the namespace
      is one I am not acting for it might form a few more but I will
      call inet_twsk_purge again and  shortly to get rid of them.  In
      any even if the network namespace is dead timewait sockets are
      useless.
      
      Move the calls of inet_twsk_purge into batch_exit routines so
      that if I am killing a bunch of namespaces at once I will just
      call inet_twsk_purge once and save a lot of redundant unnecessary
      work.
      
      My simple 4k network namespace exit test the cleanup time dropped from
      roughly 8.2s to 1.6s.  While the time spent running inet_twsk_purge fell
      to about 2ms.  1ms for ipv4 and 1ms for ipv6.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b099ce26
    • E
      net: Use rcu lookups in inet_twsk_purge. · 575f4cd5
      Eric W. Biederman 提交于
      While we are looking up entries to free there is no reason to take
      the lock in inet_twsk_purge.  We have to drop locks and restart
      occassionally anyway so adding a few more in case we get on the
      wrong list because of a timewait move is no big deal.  At the
      same time not taking the lock for long periods of time is much
      more polite to the rest of the users of the hash table.
      
      In my test configuration of killing 4k network namespaces
      this change causes 4k back to back runs of inet_twsk_purge on an
      empty hash table to go from roughly 20.7s to 3.3s, and the total
      time to destroy 4k network namespaces goes from roughly 44s to
      3.3s.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      575f4cd5
    • E
      net: Allow fib_rule_unregister to batch · e9c5158a
      Eric W. Biederman 提交于
      Refactor the code so fib_rules_register always takes a template instead
      of the actual fib_rules_ops structure that will be used.  This is
      required for network namespace support so 2 out of the 3 callers already
      do this, it allows the error handling to be made common, and it allows
      fib_rules_unregister to free the template for hte caller.
      
      Modify fib_rules_unregister to use call_rcu instead of syncrhonize_rcu
      to allw multiple namespaces to be cleaned up in the same rcu grace
      period.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e9c5158a
    • P
      ipv4 05/05: add sysctl to accept packets with local source addresses · 8153a10c
      Patrick McHardy 提交于
      commit 8ec1e0ebe26087bfc5c0394ada5feb5758014fc8
      Author: Patrick McHardy <kaber@trash.net>
      Date:   Thu Dec 3 12:16:35 2009 +0100
      
          ipv4: add sysctl to accept packets with local source addresses
      
          Change fib_validate_source() to accept packets with a local source address when
          the "accept_local" sysctl is set for the incoming inet device. Combined with the
          previous patches, this allows to communicate between multiple local interfaces
          over the wire.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8153a10c
    • P
      net 04/05: fib_rules: allow to delete local rule · 5adef180
      Patrick McHardy 提交于
      commit d124356ce314fff22a047ea334379d5105b2d834
      Author: Patrick McHardy <kaber@trash.net>
      Date:   Thu Dec 3 12:16:35 2009 +0100
      
          net: fib_rules: allow to delete local rule
      
          Allow to delete the local rule and recreate it with a higher priority. This
          can be used to force packets with a local destination out on the wire instead
          of routing them to loopback. Additionally this patch allows to recreate rules
          with a priority of 0.
      
          Combined with the previous patch to allow oif classification, a socket can
          be bound to the desired interface and packets routed to the wire like this:
      
          # move local rule to lower priority
          ip rule add pref 1000 lookup local
          ip rule del pref 0
      
          # route packets of sockets bound to eth0 to the wire independant
          # of the destination address
          ip rule add pref 100 oif eth0 lookup 100
          ip route add default dev eth0 table 100
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5adef180
  4. 03 12月, 2009 9 次提交
    • D
      tcp: sysctl_tcp_cookie_size needs to be exported to modules. · e6b09cca
      David S. Miller 提交于
      Otherwise:
      
      ERROR: "sysctl_tcp_cookie_size" [net/ipv6/ipv6.ko] undefined!
      make[1]: *** [__modpost] Error 1
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e6b09cca
    • D
      tcp: Fix warning on 64-bit. · f9a2e69e
      David S. Miller 提交于
      net/ipv4/tcp_output.c: In function ‘tcp_make_synack’:
      net/ipv4/tcp_output.c:2488: warning: cast from pointer to integer of different size
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f9a2e69e
    • W
      TCPCT part 1g: Responder Cookie => Initiator · 4957faad
      William Allen Simpson 提交于
      Parse incoming TCP_COOKIE option(s).
      
      Calculate <SYN,ACK> TCP_COOKIE option.
      
      Send optional <SYN,ACK> data.
      
      This is a significantly revised implementation of an earlier (year-old)
      patch that no longer applies cleanly, with permission of the original
      author (Adam Langley):
      
          http://thread.gmane.org/gmane.linux.network/102586
      
      Requires:
         TCPCT part 1a: add request_values parameter for sending SYNACK
         TCPCT part 1b: generate Responder Cookie secret
         TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS
         TCPCT part 1d: define TCP cookie option, extend existing struct's
         TCPCT part 1e: implement socket option TCP_COOKIE_TRANSACTIONS
         TCPCT part 1f: Initiator Cookie => Responder
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4957faad
    • W
      TCPCT part 1f: Initiator Cookie => Responder · bd0388ae
      William Allen Simpson 提交于
      Calculate and format <SYN> TCP_COOKIE option.
      
      This is a significantly revised implementation of an earlier (year-old)
      patch that no longer applies cleanly, with permission of the original
      author (Adam Langley):
      
          http://thread.gmane.org/gmane.linux.network/102586
      
      Requires:
         TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS
         TCPCT part 1d: define TCP cookie option, extend existing struct's
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bd0388ae
    • W
      TCPCT part 1e: implement socket option TCP_COOKIE_TRANSACTIONS · e56fb50f
      William Allen Simpson 提交于
      Provide per socket control of the TCP cookie option and SYN/SYNACK data.
      
      This is a straightforward re-implementation of an earlier (year-old)
      patch that no longer applies cleanly, with permission of the original
      author (Adam Langley):
      
          http://thread.gmane.org/gmane.linux.network/102586
      
      The principle difference is using a TCP option to carry the cookie nonce,
      instead of a user configured offset in the data.
      
      Allocations have been rearranged to avoid requiring GFP_ATOMIC.
      
      Requires:
         net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED
         TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS
         TCPCT part 1d: define TCP cookie option, extend existing struct's
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e56fb50f
    • W
      TCPCT part 1d: define TCP cookie option, extend existing struct's · 435cf559
      William Allen Simpson 提交于
      Data structures are carefully composed to require minimal additions.
      For example, the struct tcp_options_received cookie_plus variable fits
      between existing 16-bit and 8-bit variables, requiring no additional
      space (taking alignment into consideration).  There are no additions to
      tcp_request_sock, and only 1 pointer in tcp_sock.
      
      This is a significantly revised implementation of an earlier (year-old)
      patch that no longer applies cleanly, with permission of the original
      author (Adam Langley):
      
          http://thread.gmane.org/gmane.linux.network/102586
      
      The principle difference is using a TCP option to carry the cookie nonce,
      instead of a user configured offset in the data.  This is more flexible and
      less subject to user configuration error.  Such a cookie option has been
      suggested for many years, and is also useful without SYN data, allowing
      several related concepts to use the same extension option.
      
          "Re: SYN floods (was: does history repeat itself?)", September 9, 1996.
          http://www.merit.net/mail.archives/nanog/1996-09/msg00235.html
      
          "Re: what a new TCP header might look like", May 12, 1998.
          ftp://ftp.isi.edu/end2end/end2end-interest-1998.mail
      
      These functions will also be used in subsequent patches that implement
      additional features.
      
      Requires:
         TCPCT part 1a: add request_values parameter for sending SYNACK
         TCPCT part 1b: generate Responder Cookie secret
         TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      435cf559
    • W
      TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS · 519855c5
      William Allen Simpson 提交于
      Define sysctl (tcp_cookie_size) to turn on and off the cookie option
      default globally, instead of a compiled configuration option.
      
      Define per socket option (TCP_COOKIE_TRANSACTIONS) for setting constant
      data values, retrieving variable cookie values, and other facilities.
      
      Move inline tcp_clear_options() unchanged from net/tcp.h to linux/tcp.h,
      near its corresponding struct tcp_options_received (prior to changes).
      
      This is a straightforward re-implementation of an earlier (year-old)
      patch that no longer applies cleanly, with permission of the original
      author (Adam Langley):
      
          http://thread.gmane.org/gmane.linux.network/102586
      
      These functions will also be used in subsequent patches that implement
      additional features.
      
      Requires:
         net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      519855c5
    • W
      TCPCT part 1b: generate Responder Cookie secret · da5c78c8
      William Allen Simpson 提交于
      Define (missing) hash message size for SHA1.
      
      Define hashing size constants specific to TCP cookies.
      
      Add new function: tcp_cookie_generator().
      
      Maintain global secret values for tcp_cookie_generator().
      
      This is a significantly revised implementation of earlier (15-year-old)
      Photuris [RFC-2522] code for the KA9Q cooperative multitasking platform.
      
      Linux RCU technique appears to be well-suited to this application, though
      neither of the circular queue items are freed.
      
      These functions will also be used in subsequent patches that implement
      additional features.
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      da5c78c8
    • W
      TCPCT part 1a: add request_values parameter for sending SYNACK · e6b4d113
      William Allen Simpson 提交于
      Add optional function parameters associated with sending SYNACK.
      These parameters are not needed after sending SYNACK, and are not
      used for retransmission.  Avoids extending struct tcp_request_sock,
      and avoids allocating kernel memory.
      
      Also affects DCCP as it uses common struct request_sock_ops,
      but this parameter is currently reserved for future use.
      
      Signed-off-by: William.Allen.Simpson@gmail.com
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e6b4d113
  5. 02 12月, 2009 4 次提交
  6. 01 12月, 2009 1 次提交
  7. 30 11月, 2009 2 次提交
  8. 26 11月, 2009 3 次提交
  9. 24 11月, 2009 2 次提交
  10. 22 11月, 2009 1 次提交
  11. 18 11月, 2009 2 次提交