BUG: Incorrect MTU on GRE device if remote is unspecified

From: Slava Bacherikov
Date: Mon Jan 25 2021 - 15:21:11 EST


Hi, I'd like to report a regression. Currently, if you create GRE
interface on the latest stable or LTS kernel (5.4 branch) with
unspecified remote destination it's MTU will be adjusted for header size
twice. For example:

$ ip link add name test type gre local 127.0.0.32
$ ip link show test | grep mtu
27: test@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group
default qlen 1000

or with FOU

$ ip link add name test2 type gre local 127.0.0.32 encap fou
encap-sport auto encap-dport 6666
$ ip link show test2 | grep mtu
28: test2@NONE: <NOARP> mtu 1436 qdisc noop state DOWN mode DEFAULT
group default qlen 1000

The same happens with GUE too (MTU is 1428 instead of 1464).
As you can see that MTU in first case is 1452 (1500 - 24 - 24) and with
FOU it's 1436 (1500 - 32 - 32), GUE 1428 (1500 - 36 - 36). If remote
address is specified MTU is correct.

This regression caused by fdafed459998e2be0e877e6189b24cb7a0183224 commit.