linux/net
Herbert Xu 27b437c8b7 [NET]: Update frag_list in pskb_trim
When pskb_trim has to defer to ___pksb_trim to trim the frag_list part of
the packet, the frag_list is not updated to reflect the trimming.  This
will usually work fine until you hit something that uses the packet length
or tail from the frag_list.

Examples include esp_output and ip_fragment.

Another problem caused by this is that you can end up with a linear packet
with a frag_list attached.

It is possible to get away with this if we audit everything to make sure
that they always consult skb->len before going down onto frag_list.  In
fact we can do the samething for the paged part as well to avoid copying
the data area of the skb.  For now though, let's do the conservative fix
and update frag_list.

Many thanks to Marco Berizzi for helping me to track down this bug.

This 4-year old bug took 3 months to track down.  Marco was very patient
indeed :)

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-07-13 19:26:39 -07:00
..
802 Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
8021q [PATCH] lockdep: annotate vlan net device as being a special class 2006-07-03 15:27:10 -07:00
appletalk Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
atm [ATM] net/atm/clip.c: fix PROC_FS=n compile 2006-07-09 12:13:18 -07:00
ax25 [AX.25]: Optimize AX.25 socket list lock 2006-07-12 13:58:57 -07:00
bluetooth [Bluetooth] Fix deadlock in the L2CAP layer 2006-07-12 15:34:35 -07:00
bridge [NET] gso: Add skb_is_gso 2006-07-08 13:34:32 -07:00
core [NET]: Update frag_list in pskb_trim 2006-07-13 19:26:39 -07:00
dccp [DCCP]: Fix sparse warnings. 2006-07-10 14:50:37 -07:00
decnet [NET]: Fix IPv4/DECnet routing rule dumping 2006-07-08 13:38:55 -07:00
econet Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ethernet Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ieee80211 [PATCH] softmac: fix build-break from 881ee6999d66c8fc903b429b73bbe6045b38c549 2006-07-05 13:42:58 -04:00
ipv4 [IPV4]: Fix error handling for fib_insert_node call 2006-07-12 13:59:04 -07:00
ipv6 [IPCOMP]: Fix truesize after decompression 2006-07-12 13:58:55 -07:00
ipx Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
irda Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
key Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
lapb [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
llc Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
netfilter Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2006-06-30 15:40:17 -07:00
netlink [PATCH] bcm43xx: netlink deadlock fix 2006-07-03 15:26:58 -07:00
netrom [NETROM] lockdep: fix false positive 2006-07-12 13:59:02 -07:00
packet Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
rose [ROSE] lockdep: fix false positive 2006-07-12 13:58:59 -07:00
rxrpc Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sched [MAINTAINERS]: Add proper entry for TC classifier 2006-07-12 13:58:48 -07:00
sctp Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sunrpc This fixes a panic doing the first READDIR or READDIRPLUS call when: 2006-07-05 13:17:12 -04:00
tipc [TIPC] Fixed sk_buff panic caused by tipc_link_bundle_buf (REVISED) 2006-07-03 19:39:36 -07:00
unix [AF_UNIX]: datagram getpeersec fix 2006-07-03 19:26:15 -07:00
wanrouter Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
x25 Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
xfrm Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
compat.c [NETFILTER]: iptables 32bit compat layer 2006-04-01 02:25:19 -08:00
Kconfig [SECMARK]: Add secmark support to core networking. 2006-06-17 21:29:57 -07:00
Makefile [TIPC] Initial merge 2006-01-12 14:06:31 -08:00
nonet.c [PATCH] Make most file operations structs in fs/ const 2006-03-28 09:16:06 -08:00
socket.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sysctl_net.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00