1. 30 8月, 2005 3 次提交
    • D
      [NET]: Kill skb->list · 8728b834
      David S. Miller 提交于
      Remove the "list" member of struct sk_buff, as it is entirely
      redundant.  All SKB list removal callers know which list the
      SKB is on, so storing this in sk_buff does nothing other than
      taking up some space.
      
      Two tricky bits were SCTP, which I took care of, and two ATM
      drivers which Francois Romieu <romieu@fr.zoreil.com> fixed
      up.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NFrancois Romieu <romieu@fr.zoreil.com>
      8728b834
    • H
      [NETFILTER]: reduce netfilter sk_buff enlargement · 6869c4d8
      Harald Welte 提交于
      As discussed at netconf'05, we're trying to save every bit in sk_buff.
      The patch below makes sk_buff 8 bytes smaller.  I did some basic
      testing on my notebook and it seems to work.
      
      The only real in-tree user of nfcache was IPVS, who only needs a
      single bit.  Unfortunately I couldn't find some other free bit in
      sk_buff to stuff that bit into, so I introduced a separate field for
      them.  Maybe the IPVS guys can resolve that to further save space.
      
      Initially I wanted to shrink pkt_type to three bits (PACKET_HOST and
      alike are only 6 values defined), but unfortunately the bluetooth code
      overloads pkt_type :(
      
      The conntrack-event-api (out-of-tree) uses nfcache, but Rusty just
      came up with a way how to do it without any skb fields, so it's safe
      to remove it.
      
      - remove all never-implemented 'nfcache' code
      - don't have ipvs code abuse 'nfcache' field. currently get's their own
        compile-conditional skb->ipvs_property field.  IPVS maintainers can
        decide to move this bit elswhere, but nfcache needs to die.
      - remove skb->nfcache field to save 4 bytes
      - move skb->nfctinfo into three unused bits to save further 4 bytes
      Signed-off-by: NHarald Welte <laforge@netfilter.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6869c4d8
    • H
      [NETFILTER]: convert nfmark and conntrack mark to 32bit · bf3a46aa
      Harald Welte 提交于
      As discussed at netconf'05, we convert nfmark and conntrack-mark to be
      32bits even on 64bit architectures.
      Signed-off-by: NHarald Welte <laforge@netfilter.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bf3a46aa
  2. 24 8月, 2005 13 次提交
  3. 21 8月, 2005 3 次提交
  4. 19 8月, 2005 3 次提交
  5. 18 8月, 2005 4 次提交
  6. 17 8月, 2005 3 次提交
    • P
      [IPV6]: Fix SKB leak in ip6_input_finish() · fad87aca
      Patrick McHardy 提交于
      Changing it to how ip_input handles should fix it.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fad87aca
    • H
      [TCP]: Fix bug #5070: kernel BUG at net/ipv4/tcp_output.c:864 · c8ac3774
      Herbert Xu 提交于
      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: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c8ac3774
    • P
      [IPV6]: Fix raw socket hardware checksum failures · 793245ee
      Patrick McHardy 提交于
      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: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      793245ee
  7. 16 8月, 2005 1 次提交
  8. 12 8月, 2005 7 次提交
  9. 11 8月, 2005 2 次提交
  10. 10 8月, 2005 1 次提交
    • A
      [NET]: Fix memory leak in sys_{send,recv}msg() w/compat · d64d3873
      Andrew Morton 提交于
      From: Dave Johnson <djohnson+linux-kernel@sw.starentnetworks.com>
      
      sendmsg()/recvmsg() syscalls from o32/n32 apps to a 64bit kernel will
      cause a kernel memory leak if iov_len > UIO_FASTIOV for each syscall!
      
      This is because both sys_sendmsg() and verify_compat_iovec() kmalloc a
      new iovec structure.  Only the one from sys_sendmsg() is free'ed.
      
      I wrote a simple test program to confirm this after identifying the
      problem:
      
      http://davej.org/programs/testsendmsg.c
      
      Note that the below fix will break solaris_sendmsg()/solaris_recvmsg() as
      it also calls verify_compat_iovec() but expects it to malloc internally.
      
      [ I fixed that. -DaveM ]
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d64d3873