ipv4: Revert removal of rt_uses_gateway
authorDavid Ahern <dsahern@gmail.com>
Tue, 17 Sep 2019 17:39:49 +0000 (10:39 -0700)
committerJakub Kicinski <jakub.kicinski@netronome.com>
Sat, 21 Sep 2019 01:23:33 +0000 (18:23 -0700)
commit77d5bc7e6a6cf8bbeca31aab7f0c5449a5eee762
treec9eb74276e11bbe3b2deecda27f2ebd2fcb3c0a2
parente84622ce24482f6e9c1bf29d3bdd556eb587ff41
ipv4: Revert removal of rt_uses_gateway

Julian noted that rt_uses_gateway has a more subtle use than 'is gateway
set':
    https://lore.kernel.org/netdev/alpine.LFD.2.21.1909151104060.2546@ja.home.ssi.bg/

Revert that part of the commit referenced in the Fixes tag.

Currently, there are no u8 holes in 'struct rtable'. There is a 4-byte hole
in the second cacheline which contains the gateway declaration. So move
rt_gw_family down to the gateway declarations since they are always used
together, and then re-use that u8 for rt_uses_gateway. End result is that
rtable size is unchanged.

Fixes: 1550c171935d ("ipv4: Prepare rtable for IPv6 gateway")
Reported-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
drivers/infiniband/core/addr.c
include/net/route.h
net/ipv4/inet_connection_sock.c
net/ipv4/ip_forward.c
net/ipv4/ip_output.c
net/ipv4/route.c
net/ipv4/xfrm4_policy.c