ip: fail fast on IP defrag errors
authorPeter Oskolkov <posk@google.com>
Tue, 28 Aug 2018 18:36:19 +0000 (11:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 30 Aug 2018 02:49:36 +0000 (19:49 -0700)
commit0ff89efb524631ac9901b81446b453c29711c376
treef495b689a886f40a9a53742565b930fb9b3f755b
parentb943f17e06493fd2c7fd00743093ad5dcdb90e7f
ip: fail fast on IP defrag errors

The current behavior of IP defragmentation is inconsistent:
- some overlapping/wrong length fragments are dropped without
  affecting the queue;
- most overlapping fragments cause the whole frag queue to be dropped.

This patch brings consistency: if a bad fragment is detected,
the whole frag queue is dropped. Two major benefits:
- fail fast: corrupted frag queues are cleared immediately, instead of
  by timeout;
- testing of overlapping fragments is now much easier: any kind of
  random fragment length mutation now leads to the frag queue being
  discarded (IP packet dropped); before this patch, some overlaps were
  "corrected", with tests not seeing expected packet drops.

Note that in one case (see "if (end&7)" conditional) the current
behavior is preserved as there are concerns that this could be
legitimate padding.

Signed-off-by: Peter Oskolkov <posk@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_fragment.c