1. 17 Aug, 2005 2 commits
    • Herbert Xu's avatar
      [TCP]: Fix bug #5070: kernel BUG at net/ipv4/tcp_output.c:864 · c8ac3774
      Herbert Xu authored
      1) We send out a normal sized packet with TSO on to start off.
      2) ICMP is received indicating a smaller MTU.
      3) We send the current sk_send_head which needs to be fragmented
      since it was created before the ICMP event.  The first fragment
      is then sent out.
      
      At this point the remaining fragment is allocated by tcp_fragment.
      However, its size is padded to fit the L1 cache-line size therefore
      creating tail-room up to 124 bytes long.
      
      This fragment will also be sitting at sk_send_head.
      
      4) tcp_sendmsg is called again and it stores data in the tail-room of
      of the fragment.
      5) tcp_push_one is called by tcp_sendmsg which then calls tso_fragment
      since the packet as a whole exceeds the MTU.
      
      At this point we have a packet that has data in the head area being
      fed to tso_fragment which bombs out.
      
      My take on this is that we shouldn't ever call tcp_fragment on a TSO
      socket for a packet that is yet to be transmitted since this creates
      a packet on sk_send_head that cannot be extended.
      
      So here is a patch to change it so that tso_fragment is always used
      in this case.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c8ac3774
    • Patrick McHardy's avatar
      [IPV6]: Fix raw socket hardware checksum failures · 793245ee
      Patrick McHardy authored
      When packets hit raw sockets the csum update isn't done yet, do it manually.
      Packets can also reach rawv6_rcv on the output path through
      ip6_call_ra_chain, in this case skb->ip_summed is CHECKSUM_NONE and this
      codepath isn't executed.
      Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      793245ee
  2. 16 Aug, 2005 9 commits
  3. 15 Aug, 2005 8 commits
  4. 14 Aug, 2005 4 commits
  5. 13 Aug, 2005 2 commits
  6. 12 Aug, 2005 11 commits
  7. 11 Aug, 2005 3 commits
    • Alexey Dobriyan's avatar
      [NET]: Make skb->protocol __be16 · a0d3bea3
      Alexey Dobriyan authored
      There are many instances of
      
      	skb->protocol = htons(ETH_P_*);
      	skb->protocol = __constant_htons(ETH_P_*);
      and
      	skb->protocol = *_type_trans(...);
      
      Most of *_type_trans() are already endian-annotated, so, let's shift
      attention on other warnings.
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0d3bea3
    • Johannes Stezenbach's avatar
      [PATCH] Fix DVB URL · 7d69fa62
      Johannes Stezenbach authored
      Signed-off-by: default avatarJohannes Stezenbach <js@linuxtv.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7d69fa62
    • Herbert Xu's avatar
      [TCP]: Adjust {p,f}ackets_out correctly in tcp_retransmit_skb() · b5da623a
      Herbert Xu authored
      Well I've only found one potential cause for the assertion
      failure in tcp_mark_head_lost.  First of all, this can only
      occur if cnt > 1 since tp->packets_out is never zero here.
      If it did hit zero we'd have much bigger problems.
      
      So cnt is equal to fackets_out - reordering.  Normally
      fackets_out is less than packets_out.  The only reason
      I've found that might cause fackets_out to exceed packets_out
      is if tcp_fragment is called from tcp_retransmit_skb with a
      TSO skb and the current MSS is greater than the MSS stored
      in the TSO skb.  This might occur as the result of an expiring
      dst entry.
      
      In that case, packets_out may decrease (line 1380-1381 in
      tcp_output.c).  However, fackets_out is unchanged which means
      that it may in fact exceed packets_out.
      
      Previously tcp_retrans_try_collapse was the only place where
      packets_out can go down and it takes care of this by decrementing
      fackets_out.
      
      So we should make sure that fackets_out is reduced by an appropriate
      amount here as well.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b5da623a
  8. 10 Aug, 2005 1 commit