diff options
author | 2019-09-05 11:40:54 +0200 | |
---|---|---|
committer | 2019-09-05 11:40:54 +0200 | |
commit | 151a41014bff92f353263cadc051435dc9c3258e (patch) | |
tree | aa082a0745edd5b7051668f455dfc0ee1e4a9de0 /net/ipv4/ip_fragment.c | |
parent | gpio: Fix up merge collision in include file (diff) | |
parent | Linux 5.3-rc7 (diff) | |
download | wireguard-linux-151a41014bff92f353263cadc051435dc9c3258e.tar.xz wireguard-linux-151a41014bff92f353263cadc051435dc9c3258e.zip |
Merge tag 'v5.3-rc7' into devel
Linux 5.3-rc7
Diffstat (limited to '')
-rw-r--r-- | net/ipv4/ip_fragment.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index 4385eb9e781f..cfeb8890f94e 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c @@ -393,6 +393,11 @@ err: return err; } +static bool ip_frag_coalesce_ok(const struct ipq *qp) +{ + return qp->q.key.v4.user == IP_DEFRAG_LOCAL_DELIVER; +} + /* Build a new IP datagram from all its fragments. */ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *skb, struct sk_buff *prev_tail, struct net_device *dev) @@ -421,7 +426,8 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *skb, if (len > 65535) goto out_oversize; - inet_frag_reasm_finish(&qp->q, skb, reasm_data); + inet_frag_reasm_finish(&qp->q, skb, reasm_data, + ip_frag_coalesce_ok(qp)); skb->dev = dev; IPCB(skb)->frag_max_size = max(qp->max_df_size, qp->q.max_size); |