linux/net/core
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
..
datagram.c [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
dev_mcast.c [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
dev.c [NET] gso: Fix up GSO packets with broken checksums 2006-07-08 13:34:56 -07:00
dst.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
dv.c [NET]: More kzalloc conversions. 2006-04-09 22:25:48 -07:00
ethtool.c [NET]: Added GSO toggle 2006-06-23 02:07:36 -07:00
filter.c unaligned access in sk_run_filter() 2006-04-18 15:57:54 -07:00
flow.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
gen_estimator.c [NET]: More kzalloc conversions. 2006-04-09 22:25:48 -07:00
gen_stats.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iovec.c [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
link_watch.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
Makefile [I/OAT]: Utility functions for offloading sk_buff to iovec copies 2006-06-17 21:25:46 -07:00
neighbour.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
net-sysfs.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
netpoll.c [NET] netpoll: break recursive loop in netpoll rx path 2006-06-26 00:04:27 -07:00
pktgen.c [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
request_sock.c [NET]: More kzalloc conversions. 2006-04-09 22:25:48 -07:00
rtnetlink.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
scm.c [PATCH] capable/capability.h (net/) 2006-01-11 18:42:14 -08:00
skbuff.c [NET]: Update frag_list in pskb_trim 2006-07-13 19:26:39 -07:00
sock.c [PATCH] lockdep: annotate sk_locks 2006-07-03 15:27:10 -07:00
stream.c [NET]: fix __sk_stream_mem_reclaim 2006-07-12 17:58:53 -07:00
sysctl_net_core.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
user_dma.c [I/OAT]: Add a sysctl for tuning the I/OAT offloaded I/O threshold 2006-06-17 21:25:54 -07:00
utils.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
wireless.c [PATCH] wext: Fix RtNetlink ENCODE security permissions 2006-04-19 17:25:41 -04:00