1. 30 Jan, 2009 3 commits
    • Shyam Iyer's avatar
      net: Fix OOPS in skb_seq_read(). · 71b3346d
      Shyam Iyer authored
      It oopsd for me in skb_seq_read. addr2line said it was
      linux-2.6/net/core/skbuff.c:2228, which is this line:
      
      
      	while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) {
      
      
      I added some printks in there and it looks like we hit this:
      
              } else if (st->root_skb == st->cur_skb &&
                         skb_shinfo(st->root_skb)->frag_list) {
                       st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
                       st->frag_idx = 0;
                       goto next_skb;
              }
      
      
      
      Actually I did some testing and added a few printks and found that the
      st->cur_skb->data was 0 and hence the ptr used by iscsi_tcp was null.
      This caused the kernel panic.
      
       	if (abs_offset < block_limit) {
      -		*data = st->cur_skb->data + abs_offset;
      +		*data = st->cur_skb->data + (abs_offset - st->stepped_offset);
      
      I enabled the debug_tcp and with a few printks found that the code did
      not go to the next_skb label and could find that the sequence being
      followed was this -
      
      It hit this if condition -
      
              if (st->cur_skb->next) {
                      st->cur_skb = st->cur_skb->next;
                      st->frag_idx = 0;
                      goto next_skb;
      
      And so, now the st pointer is shifted to the next skb whereas actually
      it should have hit the second else if first since the data is in the
      frag_list.
      
              else if (st->root_skb == st->cur_skb &&
                       skb_shinfo(st->root_skb)->frag_list) {
                      st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
                      goto next_skb;
              }
      
      Reversing the two conditions the attached patch fixes the issue for me
      on top of Herbert's patches. 
      Signed-off-by: default avatarShyam Iyer <shyam_iyer@dell.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71b3346d
    • Herbert Xu's avatar
      net: Fix frag_list handling in skb_seq_read · 95e3b24c
      Herbert Xu authored
      The frag_list handling was broken in skb_seq_read:
      
      1) We didn't add the stepped offset when looking at the head
      are of fragments other than the first.
      
      2) We didn't take the stepped offset away when setting the data
      pointer in the head area.
      
      3) The frag index wasn't reset.
      
      This patch fixes both issues.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95e3b24c
    • Dhananjay Phadke's avatar
      netxen: revert jumbo ringsize · e125646a
      Dhananjay Phadke authored
      Reducing jumbo ring size below 1024 reduces throughput for old
      firmwares (3.4.216 and older) running on older (NX2031) chip,
      so restore it back to 1024.
      
      This was reduced in commit 32ec8033
      ("netxen: reduce memory footprint").
      
      Raising jumbo ring size from 512 to 1024, adds ~4MB per port, but
      there's still big saving because of original patch (~20MB per port).
      Signed-off-by: default avatarDhananjay Phadke <dhananjay@netxen.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e125646a
  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 4 commits
  5. 26 Jan, 2009 21 commits