1. 30 Jan, 2009 27 commits
  2. 29 Jan, 2009 7 commits
  3. 28 Jan, 2009 5 commits
    • David S. Miller's avatar
      ipv6: Make mc_forwarding sysctl read-only. · a4e6db07
      David S. Miller authored
      The kernel manages this value internally, as necessary, as
      VIFs are added/removed and as multicast routers are registered
      and deregistered.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a4e6db07
    • Thomas Goff's avatar
      IPv6: Fix multicast routing bugs. · 1d6e55f1
      Thomas Goff authored
      This patch addresses the IPv6 multicast routing issues described
      below.  It was tested with XORP 1.4/1.5 as the IPv6 PIM-SM routing
      daemon against FreeBSD peers.
      
      net/ipv6/ip6_input.c:
      
        - Don't try to forward link-local multicast packets.
      
        - Don't reset skb2->dev before calling ip6_mr_input() so packets can
          be identified as coming from the PIM register vif properly.
      
      net/ipv6/ip6mr.c:
      
        - Fix incoming PIM register messages processing:
      
          * The IPv6 pseudo-header should be included when checksumming PIM
            messages (RFC 4601 section 4.9; RFC 3973 section 4.7.1).
      
          * Packets decapsulated from PIM register messages should have
            skb->protocol ETH_P_IPV6.
      
        - Enable/disable IPv6 multicast forwarding on the corresponding
          interface when a routing daemon adds/removes a multicast virtual
          interface.
      
        - Remove incorrect skb_pull() to fix userspace signaling.
      
        - Enable/disable global IPv6 multicast forwarding when an IPv6
          multicast routing socket is opened/closed.
      
      net/ipv6/route.c:
      
        - Don't use strict routing logic for packets decapsulated from PIM
          register messages (similar to disabling rp_filter for the IPv4
          case).
      Signed-off-by: default avatarThomas Goff <thomas.goff@boeing.com>
      Reviewed-by: default avatarFred Templin <fred.l.templin@boeing.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d6e55f1
    • Jiri Pirko's avatar
      net: fix xfrm reverse flow lookup for icmp6 · 6c06a478
      Jiri Pirko authored
      This patch fixes the xfrm reverse flow lookup for icmp6 so that icmp6 packets
      don't get lost over ipsec tunnels. Similar patch is in RHEL5 kernel for a quite
      long time and I do not see why it isn't in mainline.
      Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
      Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c06a478
    • Eric Dumazet's avatar
      net: wrong test in inet_ehash_locks_alloc() · 94cd3e6c
      Eric Dumazet authored
      In commit 9db66bdc (net: convert
      TCP/DCCP ehash rwlocks to spinlocks), I forgot to change one
      occurrence of rwlock_t to spinlock_t
      
      I believe sizeof(raw_spinlock_t) might be > 0 on !CONFIG_SMP if
      CONFIG_DEBUG_SPINLOCK while sizeof(raw_rwlock_t) should be 0 in this
      case.
      
      Fortunatly, CONFIG_DEBUG_SPINLOCK adds fields to both spinlock_t and
      rwlock_t, but at this might change in the future (being able to debug
      spinlocks but not rwlocks for example), better to be safe.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      94cd3e6c
    • Jesse Brandeburg's avatar
      e1000: fix bug with shared interrupt during reset · 15b2bee2
      Jesse Brandeburg authored
      A nasty bug was found where an MTU change (or anything else that caused a
      reset) could race with the interrupt code.  The interrupt code was entered
      by a shared interrupt during the MTU change.
      
      This change prevents the interrupt code from running while the driver is in
      the middle of its reset path.
      Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      15b2bee2
  4. 27 Jan, 2009 1 commit
    • Dimitris Michailidis's avatar
      tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits. · 9fa5fdf2
      Dimitris Michailidis authored
      tcp_splice_data_recv has two lengths to consider: the len parameter it
      gets from tcp_read_sock, which specifies the amount of data in the skb,
      and rd_desc->count, which is the amount of data the splice caller still
      wants.  Currently it passes just the latter to skb_splice_bits, which then
      splices min(rd_desc->count, skb->len - offset) bytes.
      
      Most of the time this is fine, except when the skb contains urgent data.
      In that case len goes only up to the urgent byte and is less than
      skb->len - offset.  By ignoring len tcp_splice_data_recv may a) splice
      data tcp_read_sock told it not to, b) return to tcp_read_sock a value > len.
      
      Now, tcp_read_sock doesn't handle used > len and leaves the socket in a
      bad state (both sk_receive_queue and copied_seq are bad at that point)
      resulting in duplicated data and corruption.
      
      Fix by passing min(rd_desc->count, len) to skb_splice_bits.
      Signed-off-by: default avatarDimitris Michailidis <dm@chelsio.com>
      Acked-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fa5fdf2