diff options
| author | David S. Miller <[email protected]> | 2018-08-05 17:16:46 -0700 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2018-08-05 17:16:46 -0700 |
| commit | c30f1fc041b74ecdb072dd44f858750414b8b19f (patch) | |
| tree | 4ecb0bb64c8baa58162b3f03046c0643a140ece0 /include/linux | |
| parent | cfb4099fb4c101dad283a163c9525240ef4a1a99 (diff) | |
| parent | fa0f527358bd900ef92f925878ed6bfbd51305cc (diff) | |
Merge branch 'ip-Use-rb-trees-for-IP-frag-queue'
Peter Oskolkov says:
====================
ip: Use rb trees for IP frag queue.
This patchset
* changes IPv4 defrag behavior to match that of IPv6: overlapping
fragments now cause the whole IP datagram to be discarded (suggested
by David Miller): there are no legitimate use cases for overlapping
fragments;
* changes IPv4 defrag queue from a list to a rb tree (suggested
by Eric Dumazet): this change removes a potential attach vector.
Upcoming patches will contain similar changes for IPv6 frag queue,
as well as a comprehensive IP defrag self-test (temporarily delayed).
====================
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/skbuff.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index fd3cb1b247df..7ebdf158a795 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -676,13 +676,16 @@ struct sk_buff { * UDP receive path is one user. */ unsigned long dev_scratch; - int ip_defrag_offset; }; }; - struct rb_node rbnode; /* used in netem & tcp stack */ + struct rb_node rbnode; /* used in netem, ip4 defrag, and tcp stack */ struct list_head list; }; - struct sock *sk; + + union { + struct sock *sk; + int ip_defrag_offset; + }; union { ktime_t tstamp; @@ -2585,7 +2588,7 @@ static inline void __skb_queue_purge(struct sk_buff_head *list) kfree_skb(skb); } -void skb_rbtree_purge(struct rb_root *root); +unsigned int skb_rbtree_purge(struct rb_root *root); void *netdev_alloc_frag(unsigned int fragsz); |