kernel: bump 4.14 to 4.14.96
[openwrt/openwrt.git] / target / linux / generic / hack-4.14 / 901-debloat_sock_diag.patch
1 From 3b6115d6b57a263bdc8c9b1df273bd4a7955eead Mon Sep 17 00:00:00 2001
2 From: Felix Fietkau <nbd@nbd.name>
3 Date: Sat, 8 Jul 2017 08:16:31 +0200
4 Subject: debloat: add some debloat patches, strip down procfs and make O_DIRECT support optional, saves ~15K after lzma on MIPS
5
6 Signed-off-by: Felix Fietkau <nbd@nbd.name>
7 ---
8 net/Kconfig | 3 +++
9 net/core/Makefile | 3 ++-
10 net/core/sock.c | 2 ++
11 net/ipv4/Kconfig | 1 +
12 net/netlink/Kconfig | 1 +
13 net/packet/Kconfig | 1 +
14 net/unix/Kconfig | 1 +
15 7 files changed, 11 insertions(+), 1 deletion(-)
16
17 --- a/net/Kconfig
18 +++ b/net/Kconfig
19 @@ -97,6 +97,9 @@ source "net/netlabel/Kconfig"
20
21 endif # if INET
22
23 +config SOCK_DIAG
24 + bool
25 +
26 config NETWORK_SECMARK
27 bool "Security Marking"
28 help
29 --- a/net/core/Makefile
30 +++ b/net/core/Makefile
31 @@ -10,9 +10,10 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
32
33 obj-y += dev.o ethtool.o dev_addr_lists.o dst.o netevent.o \
34 neighbour.o rtnetlink.o utils.o link_watch.o filter.o \
35 - sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
36 + dev_ioctl.o tso.o sock_reuseport.o \
37 fib_notifier.o
38
39 +obj-$(CONFIG_SOCK_DIAG) += sock_diag.o
40 obj-y += net-sysfs.o
41 obj-$(CONFIG_PROC_FS) += net-procfs.o
42 obj-$(CONFIG_NET_PKTGEN) += pktgen.o
43 --- a/net/core/sock.c
44 +++ b/net/core/sock.c
45 @@ -528,6 +528,18 @@ discard_and_relse:
46 }
47 EXPORT_SYMBOL(__sk_receive_skb);
48
49 +u64 sock_gen_cookie(struct sock *sk)
50 +{
51 + while (1) {
52 + u64 res = atomic64_read(&sk->sk_cookie);
53 +
54 + if (res)
55 + return res;
56 + res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
57 + atomic64_cmpxchg(&sk->sk_cookie, 0, res);
58 + }
59 +}
60 +
61 struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
62 {
63 struct dst_entry *dst = __sk_dst_get(sk);
64 @@ -1596,9 +1608,11 @@ void sk_destruct(struct sock *sk)
65
66 static void __sk_free(struct sock *sk)
67 {
68 +#ifdef CONFIG_SOCK_DIAG
69 if (unlikely(sk->sk_net_refcnt && sock_diag_has_destroy_listeners(sk)))
70 sock_diag_broadcast_destroy(sk);
71 else
72 +#endif
73 sk_destruct(sk);
74 }
75
76 --- a/net/core/sock_diag.c
77 +++ b/net/core/sock_diag.c
78 @@ -19,18 +19,6 @@ static int (*inet_rcv_compat)(struct sk_
79 static DEFINE_MUTEX(sock_diag_table_mutex);
80 static struct workqueue_struct *broadcast_wq;
81
82 -u64 sock_gen_cookie(struct sock *sk)
83 -{
84 - while (1) {
85 - u64 res = atomic64_read(&sk->sk_cookie);
86 -
87 - if (res)
88 - return res;
89 - res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
90 - atomic64_cmpxchg(&sk->sk_cookie, 0, res);
91 - }
92 -}
93 -
94 int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie)
95 {
96 u64 res;
97 --- a/net/ipv4/Kconfig
98 +++ b/net/ipv4/Kconfig
99 @@ -420,6 +420,7 @@ config INET_XFRM_MODE_BEET
100
101 config INET_DIAG
102 tristate "INET: socket monitoring interface"
103 + select SOCK_DIAG
104 default y
105 ---help---
106 Support for INET (TCP, DCCP, etc) socket monitoring interface used by
107 --- a/net/netlink/Kconfig
108 +++ b/net/netlink/Kconfig
109 @@ -4,6 +4,7 @@
110
111 config NETLINK_DIAG
112 tristate "NETLINK: socket monitoring interface"
113 + select SOCK_DIAG
114 default n
115 ---help---
116 Support for NETLINK socket monitoring interface used by the ss tool.
117 --- a/net/packet/Kconfig
118 +++ b/net/packet/Kconfig
119 @@ -18,6 +18,7 @@ config PACKET
120 config PACKET_DIAG
121 tristate "Packet: sockets monitoring interface"
122 depends on PACKET
123 + select SOCK_DIAG
124 default n
125 ---help---
126 Support for PF_PACKET sockets monitoring interface used by the ss tool.
127 --- a/net/unix/Kconfig
128 +++ b/net/unix/Kconfig
129 @@ -22,6 +22,7 @@ config UNIX
130 config UNIX_DIAG
131 tristate "UNIX: socket monitoring interface"
132 depends on UNIX
133 + select SOCK_DIAG
134 default n
135 ---help---
136 Support for UNIX socket monitoring interface used by the ss tool.