GNU Linux-libre 4.14.328-gnu1
[releases.git] / net / core / sock.c
1 /*
2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
3  *              operating system.  INET is implemented using the  BSD Socket
4  *              interface as the means of communication with the user level.
5  *
6  *              Generic socket support routines. Memory allocators, socket lock/release
7  *              handler for protocols to use and generic option handler.
8  *
9  *
10  * Authors:     Ross Biro
11  *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
12  *              Florian La Roche, <flla@stud.uni-sb.de>
13  *              Alan Cox, <A.Cox@swansea.ac.uk>
14  *
15  * Fixes:
16  *              Alan Cox        :       Numerous verify_area() problems
17  *              Alan Cox        :       Connecting on a connecting socket
18  *                                      now returns an error for tcp.
19  *              Alan Cox        :       sock->protocol is set correctly.
20  *                                      and is not sometimes left as 0.
21  *              Alan Cox        :       connect handles icmp errors on a
22  *                                      connect properly. Unfortunately there
23  *                                      is a restart syscall nasty there. I
24  *                                      can't match BSD without hacking the C
25  *                                      library. Ideas urgently sought!
26  *              Alan Cox        :       Disallow bind() to addresses that are
27  *                                      not ours - especially broadcast ones!!
28  *              Alan Cox        :       Socket 1024 _IS_ ok for users. (fencepost)
29  *              Alan Cox        :       sock_wfree/sock_rfree don't destroy sockets,
30  *                                      instead they leave that for the DESTROY timer.
31  *              Alan Cox        :       Clean up error flag in accept
32  *              Alan Cox        :       TCP ack handling is buggy, the DESTROY timer
33  *                                      was buggy. Put a remove_sock() in the handler
34  *                                      for memory when we hit 0. Also altered the timer
35  *                                      code. The ACK stuff can wait and needs major
36  *                                      TCP layer surgery.
37  *              Alan Cox        :       Fixed TCP ack bug, removed remove sock
38  *                                      and fixed timer/inet_bh race.
39  *              Alan Cox        :       Added zapped flag for TCP
40  *              Alan Cox        :       Move kfree_skb into skbuff.c and tidied up surplus code
41  *              Alan Cox        :       for new sk_buff allocations wmalloc/rmalloc now call alloc_skb
42  *              Alan Cox        :       kfree_s calls now are kfree_skbmem so we can track skb resources
43  *              Alan Cox        :       Supports socket option broadcast now as does udp. Packet and raw need fixing.
44  *              Alan Cox        :       Added RCVBUF,SNDBUF size setting. It suddenly occurred to me how easy it was so...
45  *              Rick Sladkey    :       Relaxed UDP rules for matching packets.
46  *              C.E.Hawkins     :       IFF_PROMISC/SIOCGHWADDR support
47  *      Pauline Middelink       :       identd support
48  *              Alan Cox        :       Fixed connect() taking signals I think.
49  *              Alan Cox        :       SO_LINGER supported
50  *              Alan Cox        :       Error reporting fixes
51  *              Anonymous       :       inet_create tidied up (sk->reuse setting)
52  *              Alan Cox        :       inet sockets don't set sk->type!
53  *              Alan Cox        :       Split socket option code
54  *              Alan Cox        :       Callbacks
55  *              Alan Cox        :       Nagle flag for Charles & Johannes stuff
56  *              Alex            :       Removed restriction on inet fioctl
57  *              Alan Cox        :       Splitting INET from NET core
58  *              Alan Cox        :       Fixed bogus SO_TYPE handling in getsockopt()
59  *              Adam Caldwell   :       Missing return in SO_DONTROUTE/SO_DEBUG code
60  *              Alan Cox        :       Split IP from generic code
61  *              Alan Cox        :       New kfree_skbmem()
62  *              Alan Cox        :       Make SO_DEBUG superuser only.
63  *              Alan Cox        :       Allow anyone to clear SO_DEBUG
64  *                                      (compatibility fix)
65  *              Alan Cox        :       Added optimistic memory grabbing for AF_UNIX throughput.
66  *              Alan Cox        :       Allocator for a socket is settable.
67  *              Alan Cox        :       SO_ERROR includes soft errors.
68  *              Alan Cox        :       Allow NULL arguments on some SO_ opts
69  *              Alan Cox        :       Generic socket allocation to make hooks
70  *                                      easier (suggested by Craig Metz).
71  *              Michael Pall    :       SO_ERROR returns positive errno again
72  *              Steve Whitehouse:       Added default destructor to free
73  *                                      protocol private data.
74  *              Steve Whitehouse:       Added various other default routines
75  *                                      common to several socket families.
76  *              Chris Evans     :       Call suser() check last on F_SETOWN
77  *              Jay Schulist    :       Added SO_ATTACH_FILTER and SO_DETACH_FILTER.
78  *              Andi Kleen      :       Add sock_kmalloc()/sock_kfree_s()
79  *              Andi Kleen      :       Fix write_space callback
80  *              Chris Evans     :       Security fixes - signedness again
81  *              Arnaldo C. Melo :       cleanups, use skb_queue_purge
82  *
83  * To Fix:
84  *
85  *
86  *              This program is free software; you can redistribute it and/or
87  *              modify it under the terms of the GNU General Public License
88  *              as published by the Free Software Foundation; either version
89  *              2 of the License, or (at your option) any later version.
90  */
91
92 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
93
94 #include <linux/capability.h>
95 #include <linux/errno.h>
96 #include <linux/errqueue.h>
97 #include <linux/types.h>
98 #include <linux/socket.h>
99 #include <linux/in.h>
100 #include <linux/kernel.h>
101 #include <linux/module.h>
102 #include <linux/proc_fs.h>
103 #include <linux/seq_file.h>
104 #include <linux/sched.h>
105 #include <linux/sched/mm.h>
106 #include <linux/timer.h>
107 #include <linux/string.h>
108 #include <linux/sockios.h>
109 #include <linux/net.h>
110 #include <linux/mm.h>
111 #include <linux/slab.h>
112 #include <linux/interrupt.h>
113 #include <linux/poll.h>
114 #include <linux/tcp.h>
115 #include <linux/init.h>
116 #include <linux/highmem.h>
117 #include <linux/user_namespace.h>
118 #include <linux/static_key.h>
119 #include <linux/memcontrol.h>
120 #include <linux/prefetch.h>
121
122 #include <linux/uaccess.h>
123
124 #include <linux/netdevice.h>
125 #include <net/protocol.h>
126 #include <linux/skbuff.h>
127 #include <net/net_namespace.h>
128 #include <net/request_sock.h>
129 #include <net/sock.h>
130 #include <linux/net_tstamp.h>
131 #include <net/xfrm.h>
132 #include <linux/ipsec.h>
133 #include <net/cls_cgroup.h>
134 #include <net/netprio_cgroup.h>
135 #include <linux/sock_diag.h>
136
137 #include <linux/filter.h>
138 #include <net/sock_reuseport.h>
139
140 #include <trace/events/sock.h>
141
142 #include <net/tcp.h>
143 #include <net/busy_poll.h>
144
145 static DEFINE_MUTEX(proto_list_mutex);
146 static LIST_HEAD(proto_list);
147
148 /**
149  * sk_ns_capable - General socket capability test
150  * @sk: Socket to use a capability on or through
151  * @user_ns: The user namespace of the capability to use
152  * @cap: The capability to use
153  *
154  * Test to see if the opener of the socket had when the socket was
155  * created and the current process has the capability @cap in the user
156  * namespace @user_ns.
157  */
158 bool sk_ns_capable(const struct sock *sk,
159                    struct user_namespace *user_ns, int cap)
160 {
161         return file_ns_capable(sk->sk_socket->file, user_ns, cap) &&
162                 ns_capable(user_ns, cap);
163 }
164 EXPORT_SYMBOL(sk_ns_capable);
165
166 /**
167  * sk_capable - Socket global capability test
168  * @sk: Socket to use a capability on or through
169  * @cap: The global capability to use
170  *
171  * Test to see if the opener of the socket had when the socket was
172  * created and the current process has the capability @cap in all user
173  * namespaces.
174  */
175 bool sk_capable(const struct sock *sk, int cap)
176 {
177         return sk_ns_capable(sk, &init_user_ns, cap);
178 }
179 EXPORT_SYMBOL(sk_capable);
180
181 /**
182  * sk_net_capable - Network namespace socket capability test
183  * @sk: Socket to use a capability on or through
184  * @cap: The capability to use
185  *
186  * Test to see if the opener of the socket had when the socket was created
187  * and the current process has the capability @cap over the network namespace
188  * the socket is a member of.
189  */
190 bool sk_net_capable(const struct sock *sk, int cap)
191 {
192         return sk_ns_capable(sk, sock_net(sk)->user_ns, cap);
193 }
194 EXPORT_SYMBOL(sk_net_capable);
195
196 /*
197  * Each address family might have different locking rules, so we have
198  * one slock key per address family and separate keys for internal and
199  * userspace sockets.
200  */
201 static struct lock_class_key af_family_keys[AF_MAX];
202 static struct lock_class_key af_family_kern_keys[AF_MAX];
203 static struct lock_class_key af_family_slock_keys[AF_MAX];
204 static struct lock_class_key af_family_kern_slock_keys[AF_MAX];
205
206 /*
207  * Make lock validator output more readable. (we pre-construct these
208  * strings build-time, so that runtime initialization of socket
209  * locks is fast):
210  */
211
212 #define _sock_locks(x)                                            \
213   x "AF_UNSPEC",        x "AF_UNIX"     ,       x "AF_INET"     , \
214   x "AF_AX25"  ,        x "AF_IPX"      ,       x "AF_APPLETALK", \
215   x "AF_NETROM",        x "AF_BRIDGE"   ,       x "AF_ATMPVC"   , \
216   x "AF_X25"   ,        x "AF_INET6"    ,       x "AF_ROSE"     , \
217   x "AF_DECnet",        x "AF_NETBEUI"  ,       x "AF_SECURITY" , \
218   x "AF_KEY"   ,        x "AF_NETLINK"  ,       x "AF_PACKET"   , \
219   x "AF_ASH"   ,        x "AF_ECONET"   ,       x "AF_ATMSVC"   , \
220   x "AF_RDS"   ,        x "AF_SNA"      ,       x "AF_IRDA"     , \
221   x "AF_PPPOX" ,        x "AF_WANPIPE"  ,       x "AF_LLC"      , \
222   x "27"       ,        x "28"          ,       x "AF_CAN"      , \
223   x "AF_TIPC"  ,        x "AF_BLUETOOTH",       x "IUCV"        , \
224   x "AF_RXRPC" ,        x "AF_ISDN"     ,       x "AF_PHONET"   , \
225   x "AF_IEEE802154",    x "AF_CAIF"     ,       x "AF_ALG"      , \
226   x "AF_NFC"   ,        x "AF_VSOCK"    ,       x "AF_KCM"      , \
227   x "AF_QIPCRTR",       x "AF_SMC"      ,       x "AF_MAX"
228
229 static const char *const af_family_key_strings[AF_MAX+1] = {
230         _sock_locks("sk_lock-")
231 };
232 static const char *const af_family_slock_key_strings[AF_MAX+1] = {
233         _sock_locks("slock-")
234 };
235 static const char *const af_family_clock_key_strings[AF_MAX+1] = {
236         _sock_locks("clock-")
237 };
238
239 static const char *const af_family_kern_key_strings[AF_MAX+1] = {
240         _sock_locks("k-sk_lock-")
241 };
242 static const char *const af_family_kern_slock_key_strings[AF_MAX+1] = {
243         _sock_locks("k-slock-")
244 };
245 static const char *const af_family_kern_clock_key_strings[AF_MAX+1] = {
246         _sock_locks("k-clock-")
247 };
248 static const char *const af_family_rlock_key_strings[AF_MAX+1] = {
249   "rlock-AF_UNSPEC", "rlock-AF_UNIX"     , "rlock-AF_INET"     ,
250   "rlock-AF_AX25"  , "rlock-AF_IPX"      , "rlock-AF_APPLETALK",
251   "rlock-AF_NETROM", "rlock-AF_BRIDGE"   , "rlock-AF_ATMPVC"   ,
252   "rlock-AF_X25"   , "rlock-AF_INET6"    , "rlock-AF_ROSE"     ,
253   "rlock-AF_DECnet", "rlock-AF_NETBEUI"  , "rlock-AF_SECURITY" ,
254   "rlock-AF_KEY"   , "rlock-AF_NETLINK"  , "rlock-AF_PACKET"   ,
255   "rlock-AF_ASH"   , "rlock-AF_ECONET"   , "rlock-AF_ATMSVC"   ,
256   "rlock-AF_RDS"   , "rlock-AF_SNA"      , "rlock-AF_IRDA"     ,
257   "rlock-AF_PPPOX" , "rlock-AF_WANPIPE"  , "rlock-AF_LLC"      ,
258   "rlock-27"       , "rlock-28"          , "rlock-AF_CAN"      ,
259   "rlock-AF_TIPC"  , "rlock-AF_BLUETOOTH", "rlock-AF_IUCV"     ,
260   "rlock-AF_RXRPC" , "rlock-AF_ISDN"     , "rlock-AF_PHONET"   ,
261   "rlock-AF_IEEE802154", "rlock-AF_CAIF" , "rlock-AF_ALG"      ,
262   "rlock-AF_NFC"   , "rlock-AF_VSOCK"    , "rlock-AF_KCM"      ,
263   "rlock-AF_QIPCRTR", "rlock-AF_SMC"     , "rlock-AF_MAX"
264 };
265 static const char *const af_family_wlock_key_strings[AF_MAX+1] = {
266   "wlock-AF_UNSPEC", "wlock-AF_UNIX"     , "wlock-AF_INET"     ,
267   "wlock-AF_AX25"  , "wlock-AF_IPX"      , "wlock-AF_APPLETALK",
268   "wlock-AF_NETROM", "wlock-AF_BRIDGE"   , "wlock-AF_ATMPVC"   ,
269   "wlock-AF_X25"   , "wlock-AF_INET6"    , "wlock-AF_ROSE"     ,
270   "wlock-AF_DECnet", "wlock-AF_NETBEUI"  , "wlock-AF_SECURITY" ,
271   "wlock-AF_KEY"   , "wlock-AF_NETLINK"  , "wlock-AF_PACKET"   ,
272   "wlock-AF_ASH"   , "wlock-AF_ECONET"   , "wlock-AF_ATMSVC"   ,
273   "wlock-AF_RDS"   , "wlock-AF_SNA"      , "wlock-AF_IRDA"     ,
274   "wlock-AF_PPPOX" , "wlock-AF_WANPIPE"  , "wlock-AF_LLC"      ,
275   "wlock-27"       , "wlock-28"          , "wlock-AF_CAN"      ,
276   "wlock-AF_TIPC"  , "wlock-AF_BLUETOOTH", "wlock-AF_IUCV"     ,
277   "wlock-AF_RXRPC" , "wlock-AF_ISDN"     , "wlock-AF_PHONET"   ,
278   "wlock-AF_IEEE802154", "wlock-AF_CAIF" , "wlock-AF_ALG"      ,
279   "wlock-AF_NFC"   , "wlock-AF_VSOCK"    , "wlock-AF_KCM"      ,
280   "wlock-AF_QIPCRTR", "wlock-AF_SMC"     , "wlock-AF_MAX"
281 };
282 static const char *const af_family_elock_key_strings[AF_MAX+1] = {
283   "elock-AF_UNSPEC", "elock-AF_UNIX"     , "elock-AF_INET"     ,
284   "elock-AF_AX25"  , "elock-AF_IPX"      , "elock-AF_APPLETALK",
285   "elock-AF_NETROM", "elock-AF_BRIDGE"   , "elock-AF_ATMPVC"   ,
286   "elock-AF_X25"   , "elock-AF_INET6"    , "elock-AF_ROSE"     ,
287   "elock-AF_DECnet", "elock-AF_NETBEUI"  , "elock-AF_SECURITY" ,
288   "elock-AF_KEY"   , "elock-AF_NETLINK"  , "elock-AF_PACKET"   ,
289   "elock-AF_ASH"   , "elock-AF_ECONET"   , "elock-AF_ATMSVC"   ,
290   "elock-AF_RDS"   , "elock-AF_SNA"      , "elock-AF_IRDA"     ,
291   "elock-AF_PPPOX" , "elock-AF_WANPIPE"  , "elock-AF_LLC"      ,
292   "elock-27"       , "elock-28"          , "elock-AF_CAN"      ,
293   "elock-AF_TIPC"  , "elock-AF_BLUETOOTH", "elock-AF_IUCV"     ,
294   "elock-AF_RXRPC" , "elock-AF_ISDN"     , "elock-AF_PHONET"   ,
295   "elock-AF_IEEE802154", "elock-AF_CAIF" , "elock-AF_ALG"      ,
296   "elock-AF_NFC"   , "elock-AF_VSOCK"    , "elock-AF_KCM"      ,
297   "elock-AF_QIPCRTR", "elock-AF_SMC"     , "elock-AF_MAX"
298 };
299
300 /*
301  * sk_callback_lock and sk queues locking rules are per-address-family,
302  * so split the lock classes by using a per-AF key:
303  */
304 static struct lock_class_key af_callback_keys[AF_MAX];
305 static struct lock_class_key af_rlock_keys[AF_MAX];
306 static struct lock_class_key af_wlock_keys[AF_MAX];
307 static struct lock_class_key af_elock_keys[AF_MAX];
308 static struct lock_class_key af_kern_callback_keys[AF_MAX];
309
310 /* Run time adjustable parameters. */
311 __u32 sysctl_wmem_max __read_mostly = SK_WMEM_MAX;
312 EXPORT_SYMBOL(sysctl_wmem_max);
313 __u32 sysctl_rmem_max __read_mostly = SK_RMEM_MAX;
314 EXPORT_SYMBOL(sysctl_rmem_max);
315 __u32 sysctl_wmem_default __read_mostly = SK_WMEM_MAX;
316 __u32 sysctl_rmem_default __read_mostly = SK_RMEM_MAX;
317
318 /* Maximal space eaten by iovec or ancillary data plus some space */
319 int sysctl_optmem_max __read_mostly = sizeof(unsigned long)*(2*UIO_MAXIOV+512);
320 EXPORT_SYMBOL(sysctl_optmem_max);
321
322 int sysctl_tstamp_allow_data __read_mostly = 1;
323
324 struct static_key memalloc_socks = STATIC_KEY_INIT_FALSE;
325 EXPORT_SYMBOL_GPL(memalloc_socks);
326
327 /**
328  * sk_set_memalloc - sets %SOCK_MEMALLOC
329  * @sk: socket to set it on
330  *
331  * Set %SOCK_MEMALLOC on a socket for access to emergency reserves.
332  * It's the responsibility of the admin to adjust min_free_kbytes
333  * to meet the requirements
334  */
335 void sk_set_memalloc(struct sock *sk)
336 {
337         sock_set_flag(sk, SOCK_MEMALLOC);
338         sk->sk_allocation |= __GFP_MEMALLOC;
339         static_key_slow_inc(&memalloc_socks);
340 }
341 EXPORT_SYMBOL_GPL(sk_set_memalloc);
342
343 void sk_clear_memalloc(struct sock *sk)
344 {
345         sock_reset_flag(sk, SOCK_MEMALLOC);
346         sk->sk_allocation &= ~__GFP_MEMALLOC;
347         static_key_slow_dec(&memalloc_socks);
348
349         /*
350          * SOCK_MEMALLOC is allowed to ignore rmem limits to ensure forward
351          * progress of swapping. SOCK_MEMALLOC may be cleared while
352          * it has rmem allocations due to the last swapfile being deactivated
353          * but there is a risk that the socket is unusable due to exceeding
354          * the rmem limits. Reclaim the reserves and obey rmem limits again.
355          */
356         sk_mem_reclaim(sk);
357 }
358 EXPORT_SYMBOL_GPL(sk_clear_memalloc);
359
360 int __sk_backlog_rcv(struct sock *sk, struct sk_buff *skb)
361 {
362         int ret;
363         unsigned int noreclaim_flag;
364
365         /* these should have been dropped before queueing */
366         BUG_ON(!sock_flag(sk, SOCK_MEMALLOC));
367
368         noreclaim_flag = memalloc_noreclaim_save();
369         ret = sk->sk_backlog_rcv(sk, skb);
370         memalloc_noreclaim_restore(noreclaim_flag);
371
372         return ret;
373 }
374 EXPORT_SYMBOL(__sk_backlog_rcv);
375
376 static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen)
377 {
378         struct timeval tv;
379
380         if (optlen < sizeof(tv))
381                 return -EINVAL;
382         if (copy_from_user(&tv, optval, sizeof(tv)))
383                 return -EFAULT;
384         if (tv.tv_usec < 0 || tv.tv_usec >= USEC_PER_SEC)
385                 return -EDOM;
386
387         if (tv.tv_sec < 0) {
388                 static int warned __read_mostly;
389
390                 *timeo_p = 0;
391                 if (warned < 10 && net_ratelimit()) {
392                         warned++;
393                         pr_info("%s: `%s' (pid %d) tries to set negative timeout\n",
394                                 __func__, current->comm, task_pid_nr(current));
395                 }
396                 return 0;
397         }
398         *timeo_p = MAX_SCHEDULE_TIMEOUT;
399         if (tv.tv_sec == 0 && tv.tv_usec == 0)
400                 return 0;
401         if (tv.tv_sec < (MAX_SCHEDULE_TIMEOUT/HZ - 1))
402                 *timeo_p = tv.tv_sec * HZ + DIV_ROUND_UP(tv.tv_usec, USEC_PER_SEC / HZ);
403         return 0;
404 }
405
406 static void sock_warn_obsolete_bsdism(const char *name)
407 {
408         static int warned;
409         static char warncomm[TASK_COMM_LEN];
410         if (strcmp(warncomm, current->comm) && warned < 5) {
411                 strcpy(warncomm,  current->comm);
412                 pr_warn("process `%s' is using obsolete %s SO_BSDCOMPAT\n",
413                         warncomm, name);
414                 warned++;
415         }
416 }
417
418 static bool sock_needs_netstamp(const struct sock *sk)
419 {
420         switch (sk->sk_family) {
421         case AF_UNSPEC:
422         case AF_UNIX:
423                 return false;
424         default:
425                 return true;
426         }
427 }
428
429 static void sock_disable_timestamp(struct sock *sk, unsigned long flags)
430 {
431         if (sk->sk_flags & flags) {
432                 sk->sk_flags &= ~flags;
433                 if (sock_needs_netstamp(sk) &&
434                     !(sk->sk_flags & SK_FLAGS_TIMESTAMP))
435                         net_disable_timestamp();
436         }
437 }
438
439
440 int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
441 {
442         unsigned long flags;
443         struct sk_buff_head *list = &sk->sk_receive_queue;
444
445         if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) {
446                 atomic_inc(&sk->sk_drops);
447                 trace_sock_rcvqueue_full(sk, skb);
448                 return -ENOMEM;
449         }
450
451         if (!sk_rmem_schedule(sk, skb, skb->truesize)) {
452                 atomic_inc(&sk->sk_drops);
453                 return -ENOBUFS;
454         }
455
456         skb->dev = NULL;
457         skb_set_owner_r(skb, sk);
458
459         /* we escape from rcu protected region, make sure we dont leak
460          * a norefcounted dst
461          */
462         skb_dst_force(skb);
463
464         spin_lock_irqsave(&list->lock, flags);
465         sock_skb_set_dropcount(sk, skb);
466         __skb_queue_tail(list, skb);
467         spin_unlock_irqrestore(&list->lock, flags);
468
469         if (!sock_flag(sk, SOCK_DEAD))
470                 sk->sk_data_ready(sk);
471         return 0;
472 }
473 EXPORT_SYMBOL(__sock_queue_rcv_skb);
474
475 int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
476 {
477         int err;
478
479         err = sk_filter(sk, skb);
480         if (err)
481                 return err;
482
483         return __sock_queue_rcv_skb(sk, skb);
484 }
485 EXPORT_SYMBOL(sock_queue_rcv_skb);
486
487 int __sk_receive_skb(struct sock *sk, struct sk_buff *skb,
488                      const int nested, unsigned int trim_cap, bool refcounted)
489 {
490         int rc = NET_RX_SUCCESS;
491
492         if (sk_filter_trim_cap(sk, skb, trim_cap))
493                 goto discard_and_relse;
494
495         skb->dev = NULL;
496
497         if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) {
498                 atomic_inc(&sk->sk_drops);
499                 goto discard_and_relse;
500         }
501         if (nested)
502                 bh_lock_sock_nested(sk);
503         else
504                 bh_lock_sock(sk);
505         if (!sock_owned_by_user(sk)) {
506                 /*
507                  * trylock + unlock semantics:
508                  */
509                 mutex_acquire(&sk->sk_lock.dep_map, 0, 1, _RET_IP_);
510
511                 rc = sk_backlog_rcv(sk, skb);
512
513                 mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
514         } else if (sk_add_backlog(sk, skb, sk->sk_rcvbuf)) {
515                 bh_unlock_sock(sk);
516                 atomic_inc(&sk->sk_drops);
517                 goto discard_and_relse;
518         }
519
520         bh_unlock_sock(sk);
521 out:
522         if (refcounted)
523                 sock_put(sk);
524         return rc;
525 discard_and_relse:
526         kfree_skb(skb);
527         goto out;
528 }
529 EXPORT_SYMBOL(__sk_receive_skb);
530
531 struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
532 {
533         struct dst_entry *dst = __sk_dst_get(sk);
534
535         if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
536                 sk_tx_queue_clear(sk);
537                 sk->sk_dst_pending_confirm = 0;
538                 RCU_INIT_POINTER(sk->sk_dst_cache, NULL);
539                 dst_release(dst);
540                 return NULL;
541         }
542
543         return dst;
544 }
545 EXPORT_SYMBOL(__sk_dst_check);
546
547 struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie)
548 {
549         struct dst_entry *dst = sk_dst_get(sk);
550
551         if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
552                 sk_dst_reset(sk);
553                 dst_release(dst);
554                 return NULL;
555         }
556
557         return dst;
558 }
559 EXPORT_SYMBOL(sk_dst_check);
560
561 static int sock_setbindtodevice(struct sock *sk, char __user *optval,
562                                 int optlen)
563 {
564         int ret = -ENOPROTOOPT;
565 #ifdef CONFIG_NETDEVICES
566         struct net *net = sock_net(sk);
567         char devname[IFNAMSIZ];
568         int index;
569
570         /* Sorry... */
571         ret = -EPERM;
572         if (!ns_capable(net->user_ns, CAP_NET_RAW))
573                 goto out;
574
575         ret = -EINVAL;
576         if (optlen < 0)
577                 goto out;
578
579         /* Bind this socket to a particular device like "eth0",
580          * as specified in the passed interface name. If the
581          * name is "" or the option length is zero the socket
582          * is not bound.
583          */
584         if (optlen > IFNAMSIZ - 1)
585                 optlen = IFNAMSIZ - 1;
586         memset(devname, 0, sizeof(devname));
587
588         ret = -EFAULT;
589         if (copy_from_user(devname, optval, optlen))
590                 goto out;
591
592         index = 0;
593         if (devname[0] != '\0') {
594                 struct net_device *dev;
595
596                 rcu_read_lock();
597                 dev = dev_get_by_name_rcu(net, devname);
598                 if (dev)
599                         index = dev->ifindex;
600                 rcu_read_unlock();
601                 ret = -ENODEV;
602                 if (!dev)
603                         goto out;
604         }
605
606         lock_sock(sk);
607         sk->sk_bound_dev_if = index;
608         sk_dst_reset(sk);
609         release_sock(sk);
610
611         ret = 0;
612
613 out:
614 #endif
615
616         return ret;
617 }
618
619 static int sock_getbindtodevice(struct sock *sk, char __user *optval,
620                                 int __user *optlen, int len)
621 {
622         int ret = -ENOPROTOOPT;
623 #ifdef CONFIG_NETDEVICES
624         struct net *net = sock_net(sk);
625         char devname[IFNAMSIZ];
626
627         if (sk->sk_bound_dev_if == 0) {
628                 len = 0;
629                 goto zero;
630         }
631
632         ret = -EINVAL;
633         if (len < IFNAMSIZ)
634                 goto out;
635
636         ret = netdev_get_name(net, devname, sk->sk_bound_dev_if);
637         if (ret)
638                 goto out;
639
640         len = strlen(devname) + 1;
641
642         ret = -EFAULT;
643         if (copy_to_user(optval, devname, len))
644                 goto out;
645
646 zero:
647         ret = -EFAULT;
648         if (put_user(len, optlen))
649                 goto out;
650
651         ret = 0;
652
653 out:
654 #endif
655
656         return ret;
657 }
658
659 static inline void sock_valbool_flag(struct sock *sk, int bit, int valbool)
660 {
661         if (valbool)
662                 sock_set_flag(sk, bit);
663         else
664                 sock_reset_flag(sk, bit);
665 }
666
667 bool sk_mc_loop(struct sock *sk)
668 {
669         if (dev_recursion_level())
670                 return false;
671         if (!sk)
672                 return true;
673         /* IPV6_ADDRFORM can change sk->sk_family under us. */
674         switch (READ_ONCE(sk->sk_family)) {
675         case AF_INET:
676                 return inet_sk(sk)->mc_loop;
677 #if IS_ENABLED(CONFIG_IPV6)
678         case AF_INET6:
679                 return inet6_sk(sk)->mc_loop;
680 #endif
681         }
682         WARN_ON(1);
683         return true;
684 }
685 EXPORT_SYMBOL(sk_mc_loop);
686
687 /*
688  *      This is meant for all protocols to use and covers goings on
689  *      at the socket level. Everything here is generic.
690  */
691
692 int sock_setsockopt(struct socket *sock, int level, int optname,
693                     char __user *optval, unsigned int optlen)
694 {
695         struct sock *sk = sock->sk;
696         int val;
697         int valbool;
698         struct linger ling;
699         int ret = 0;
700
701         /*
702          *      Options without arguments
703          */
704
705         if (optname == SO_BINDTODEVICE)
706                 return sock_setbindtodevice(sk, optval, optlen);
707
708         if (optlen < sizeof(int))
709                 return -EINVAL;
710
711         if (get_user(val, (int __user *)optval))
712                 return -EFAULT;
713
714         valbool = val ? 1 : 0;
715
716         lock_sock(sk);
717
718         switch (optname) {
719         case SO_DEBUG:
720                 if (val && !capable(CAP_NET_ADMIN))
721                         ret = -EACCES;
722                 else
723                         sock_valbool_flag(sk, SOCK_DBG, valbool);
724                 break;
725         case SO_REUSEADDR:
726                 sk->sk_reuse = (valbool ? SK_CAN_REUSE : SK_NO_REUSE);
727                 break;
728         case SO_REUSEPORT:
729                 sk->sk_reuseport = valbool;
730                 break;
731         case SO_TYPE:
732         case SO_PROTOCOL:
733         case SO_DOMAIN:
734         case SO_ERROR:
735                 ret = -ENOPROTOOPT;
736                 break;
737         case SO_DONTROUTE:
738                 sock_valbool_flag(sk, SOCK_LOCALROUTE, valbool);
739                 sk_dst_reset(sk);
740                 break;
741         case SO_BROADCAST:
742                 sock_valbool_flag(sk, SOCK_BROADCAST, valbool);
743                 break;
744         case SO_SNDBUF:
745                 /* Don't error on this BSD doesn't and if you think
746                  * about it this is right. Otherwise apps have to
747                  * play 'guess the biggest size' games. RCVBUF/SNDBUF
748                  * are treated in BSD as hints
749                  */
750                 val = min_t(u32, val, sysctl_wmem_max);
751 set_sndbuf:
752                 sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
753                 sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF);
754                 /* Wake up sending tasks if we upped the value. */
755                 sk->sk_write_space(sk);
756                 break;
757
758         case SO_SNDBUFFORCE:
759                 if (!capable(CAP_NET_ADMIN)) {
760                         ret = -EPERM;
761                         break;
762                 }
763                 goto set_sndbuf;
764
765         case SO_RCVBUF:
766                 /* Don't error on this BSD doesn't and if you think
767                  * about it this is right. Otherwise apps have to
768                  * play 'guess the biggest size' games. RCVBUF/SNDBUF
769                  * are treated in BSD as hints
770                  */
771                 val = min_t(u32, val, sysctl_rmem_max);
772 set_rcvbuf:
773                 sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
774                 /*
775                  * We double it on the way in to account for
776                  * "struct sk_buff" etc. overhead.   Applications
777                  * assume that the SO_RCVBUF setting they make will
778                  * allow that much actual data to be received on that
779                  * socket.
780                  *
781                  * Applications are unaware that "struct sk_buff" and
782                  * other overheads allocate from the receive buffer
783                  * during socket buffer allocation.
784                  *
785                  * And after considering the possible alternatives,
786                  * returning the value we actually used in getsockopt
787                  * is the most desirable behavior.
788                  */
789                 sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF);
790                 break;
791
792         case SO_RCVBUFFORCE:
793                 if (!capable(CAP_NET_ADMIN)) {
794                         ret = -EPERM;
795                         break;
796                 }
797                 goto set_rcvbuf;
798
799         case SO_KEEPALIVE:
800                 if (sk->sk_prot->keepalive)
801                         sk->sk_prot->keepalive(sk, valbool);
802                 sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool);
803                 break;
804
805         case SO_OOBINLINE:
806                 sock_valbool_flag(sk, SOCK_URGINLINE, valbool);
807                 break;
808
809         case SO_NO_CHECK:
810                 sk->sk_no_check_tx = valbool;
811                 break;
812
813         case SO_PRIORITY:
814                 if ((val >= 0 && val <= 6) ||
815                     ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
816                         sk->sk_priority = val;
817                 else
818                         ret = -EPERM;
819                 break;
820
821         case SO_LINGER:
822                 if (optlen < sizeof(ling)) {
823                         ret = -EINVAL;  /* 1003.1g */
824                         break;
825                 }
826                 if (copy_from_user(&ling, optval, sizeof(ling))) {
827                         ret = -EFAULT;
828                         break;
829                 }
830                 if (!ling.l_onoff)
831                         sock_reset_flag(sk, SOCK_LINGER);
832                 else {
833 #if (BITS_PER_LONG == 32)
834                         if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
835                                 sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
836                         else
837 #endif
838                                 sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
839                         sock_set_flag(sk, SOCK_LINGER);
840                 }
841                 break;
842
843         case SO_BSDCOMPAT:
844                 sock_warn_obsolete_bsdism("setsockopt");
845                 break;
846
847         case SO_PASSCRED:
848                 if (valbool)
849                         set_bit(SOCK_PASSCRED, &sock->flags);
850                 else
851                         clear_bit(SOCK_PASSCRED, &sock->flags);
852                 break;
853
854         case SO_TIMESTAMP:
855         case SO_TIMESTAMPNS:
856                 if (valbool)  {
857                         if (optname == SO_TIMESTAMP)
858                                 sock_reset_flag(sk, SOCK_RCVTSTAMPNS);
859                         else
860                                 sock_set_flag(sk, SOCK_RCVTSTAMPNS);
861                         sock_set_flag(sk, SOCK_RCVTSTAMP);
862                         sock_enable_timestamp(sk, SOCK_TIMESTAMP);
863                 } else {
864                         sock_reset_flag(sk, SOCK_RCVTSTAMP);
865                         sock_reset_flag(sk, SOCK_RCVTSTAMPNS);
866                 }
867                 break;
868
869         case SO_TIMESTAMPING:
870                 if (val & ~SOF_TIMESTAMPING_MASK) {
871                         ret = -EINVAL;
872                         break;
873                 }
874
875                 if (val & SOF_TIMESTAMPING_OPT_ID &&
876                     !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) {
877                         if (sk->sk_protocol == IPPROTO_TCP &&
878                             sk->sk_type == SOCK_STREAM) {
879                                 if ((1 << sk->sk_state) &
880                                     (TCPF_CLOSE | TCPF_LISTEN)) {
881                                         ret = -EINVAL;
882                                         break;
883                                 }
884                                 sk->sk_tskey = tcp_sk(sk)->snd_una;
885                         } else {
886                                 sk->sk_tskey = 0;
887                         }
888                 }
889
890                 if (val & SOF_TIMESTAMPING_OPT_STATS &&
891                     !(val & SOF_TIMESTAMPING_OPT_TSONLY)) {
892                         ret = -EINVAL;
893                         break;
894                 }
895
896                 sk->sk_tsflags = val;
897                 if (val & SOF_TIMESTAMPING_RX_SOFTWARE)
898                         sock_enable_timestamp(sk,
899                                               SOCK_TIMESTAMPING_RX_SOFTWARE);
900                 else
901                         sock_disable_timestamp(sk,
902                                                (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE));
903                 break;
904
905         case SO_RCVLOWAT:
906                 if (val < 0)
907                         val = INT_MAX;
908                 sk->sk_rcvlowat = val ? : 1;
909                 break;
910
911         case SO_RCVTIMEO:
912                 ret = sock_set_timeout(&sk->sk_rcvtimeo, optval, optlen);
913                 break;
914
915         case SO_SNDTIMEO:
916                 ret = sock_set_timeout(&sk->sk_sndtimeo, optval, optlen);
917                 break;
918
919         case SO_ATTACH_FILTER:
920                 ret = -EINVAL;
921                 if (optlen == sizeof(struct sock_fprog)) {
922                         struct sock_fprog fprog;
923
924                         ret = -EFAULT;
925                         if (copy_from_user(&fprog, optval, sizeof(fprog)))
926                                 break;
927
928                         ret = sk_attach_filter(&fprog, sk);
929                 }
930                 break;
931
932         case SO_ATTACH_BPF:
933                 ret = -EINVAL;
934                 if (optlen == sizeof(u32)) {
935                         u32 ufd;
936
937                         ret = -EFAULT;
938                         if (copy_from_user(&ufd, optval, sizeof(ufd)))
939                                 break;
940
941                         ret = sk_attach_bpf(ufd, sk);
942                 }
943                 break;
944
945         case SO_ATTACH_REUSEPORT_CBPF:
946                 ret = -EINVAL;
947                 if (optlen == sizeof(struct sock_fprog)) {
948                         struct sock_fprog fprog;
949
950                         ret = -EFAULT;
951                         if (copy_from_user(&fprog, optval, sizeof(fprog)))
952                                 break;
953
954                         ret = sk_reuseport_attach_filter(&fprog, sk);
955                 }
956                 break;
957
958         case SO_ATTACH_REUSEPORT_EBPF:
959                 ret = -EINVAL;
960                 if (optlen == sizeof(u32)) {
961                         u32 ufd;
962
963                         ret = -EFAULT;
964                         if (copy_from_user(&ufd, optval, sizeof(ufd)))
965                                 break;
966
967                         ret = sk_reuseport_attach_bpf(ufd, sk);
968                 }
969                 break;
970
971         case SO_DETACH_FILTER:
972                 ret = sk_detach_filter(sk);
973                 break;
974
975         case SO_LOCK_FILTER:
976                 if (sock_flag(sk, SOCK_FILTER_LOCKED) && !valbool)
977                         ret = -EPERM;
978                 else
979                         sock_valbool_flag(sk, SOCK_FILTER_LOCKED, valbool);
980                 break;
981
982         case SO_PASSSEC:
983                 if (valbool)
984                         set_bit(SOCK_PASSSEC, &sock->flags);
985                 else
986                         clear_bit(SOCK_PASSSEC, &sock->flags);
987                 break;
988         case SO_MARK:
989                 if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
990                         ret = -EPERM;
991                 else
992                         sk->sk_mark = val;
993                 break;
994
995         case SO_RXQ_OVFL:
996                 sock_valbool_flag(sk, SOCK_RXQ_OVFL, valbool);
997                 break;
998
999         case SO_WIFI_STATUS:
1000                 sock_valbool_flag(sk, SOCK_WIFI_STATUS, valbool);
1001                 break;
1002
1003         case SO_PEEK_OFF:
1004                 if (sock->ops->set_peek_off)
1005                         ret = sock->ops->set_peek_off(sk, val);
1006                 else
1007                         ret = -EOPNOTSUPP;
1008                 break;
1009
1010         case SO_NOFCS:
1011                 sock_valbool_flag(sk, SOCK_NOFCS, valbool);
1012                 break;
1013
1014         case SO_SELECT_ERR_QUEUE:
1015                 sock_valbool_flag(sk, SOCK_SELECT_ERR_QUEUE, valbool);
1016                 break;
1017
1018 #ifdef CONFIG_NET_RX_BUSY_POLL
1019         case SO_BUSY_POLL:
1020                 /* allow unprivileged users to decrease the value */
1021                 if ((val > sk->sk_ll_usec) && !capable(CAP_NET_ADMIN))
1022                         ret = -EPERM;
1023                 else {
1024                         if (val < 0)
1025                                 ret = -EINVAL;
1026                         else
1027                                 WRITE_ONCE(sk->sk_ll_usec, val);
1028                 }
1029                 break;
1030 #endif
1031
1032         case SO_MAX_PACING_RATE:
1033                 if (val != ~0U)
1034                         cmpxchg(&sk->sk_pacing_status,
1035                                 SK_PACING_NONE,
1036                                 SK_PACING_NEEDED);
1037                 sk->sk_max_pacing_rate = val;
1038                 sk->sk_pacing_rate = min(sk->sk_pacing_rate,
1039                                          sk->sk_max_pacing_rate);
1040                 break;
1041
1042         case SO_INCOMING_CPU:
1043                 WRITE_ONCE(sk->sk_incoming_cpu, val);
1044                 break;
1045
1046         case SO_CNX_ADVICE:
1047                 if (val == 1)
1048                         dst_negative_advice(sk);
1049                 break;
1050
1051         case SO_ZEROCOPY:
1052                 if (sk->sk_family != PF_INET && sk->sk_family != PF_INET6)
1053                         ret = -ENOTSUPP;
1054                 else if (sk->sk_protocol != IPPROTO_TCP)
1055                         ret = -ENOTSUPP;
1056                 else if (sk->sk_state != TCP_CLOSE)
1057                         ret = -EBUSY;
1058                 else if (val < 0 || val > 1)
1059                         ret = -EINVAL;
1060                 else
1061                         sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
1062                 break;
1063
1064         default:
1065                 ret = -ENOPROTOOPT;
1066                 break;
1067         }
1068         release_sock(sk);
1069         return ret;
1070 }
1071 EXPORT_SYMBOL(sock_setsockopt);
1072
1073 static const struct cred *sk_get_peer_cred(struct sock *sk)
1074 {
1075         const struct cred *cred;
1076
1077         spin_lock(&sk->sk_peer_lock);
1078         cred = get_cred(sk->sk_peer_cred);
1079         spin_unlock(&sk->sk_peer_lock);
1080
1081         return cred;
1082 }
1083
1084 static void cred_to_ucred(struct pid *pid, const struct cred *cred,
1085                           struct ucred *ucred)
1086 {
1087         ucred->pid = pid_vnr(pid);
1088         ucred->uid = ucred->gid = -1;
1089         if (cred) {
1090                 struct user_namespace *current_ns = current_user_ns();
1091
1092                 ucred->uid = from_kuid_munged(current_ns, cred->euid);
1093                 ucred->gid = from_kgid_munged(current_ns, cred->egid);
1094         }
1095 }
1096
1097 static int groups_to_user(gid_t __user *dst, const struct group_info *src)
1098 {
1099         struct user_namespace *user_ns = current_user_ns();
1100         int i;
1101
1102         for (i = 0; i < src->ngroups; i++)
1103                 if (put_user(from_kgid_munged(user_ns, src->gid[i]), dst + i))
1104                         return -EFAULT;
1105
1106         return 0;
1107 }
1108
1109 int sock_getsockopt(struct socket *sock, int level, int optname,
1110                     char __user *optval, int __user *optlen)
1111 {
1112         struct sock *sk = sock->sk;
1113
1114         union {
1115                 int val;
1116                 u64 val64;
1117                 struct linger ling;
1118                 struct timeval tm;
1119         } v;
1120
1121         int lv = sizeof(int);
1122         int len;
1123
1124         if (get_user(len, optlen))
1125                 return -EFAULT;
1126         if (len < 0)
1127                 return -EINVAL;
1128
1129         memset(&v, 0, sizeof(v));
1130
1131         switch (optname) {
1132         case SO_DEBUG:
1133                 v.val = sock_flag(sk, SOCK_DBG);
1134                 break;
1135
1136         case SO_DONTROUTE:
1137                 v.val = sock_flag(sk, SOCK_LOCALROUTE);
1138                 break;
1139
1140         case SO_BROADCAST:
1141                 v.val = sock_flag(sk, SOCK_BROADCAST);
1142                 break;
1143
1144         case SO_SNDBUF:
1145                 v.val = sk->sk_sndbuf;
1146                 break;
1147
1148         case SO_RCVBUF:
1149                 v.val = sk->sk_rcvbuf;
1150                 break;
1151
1152         case SO_REUSEADDR:
1153                 v.val = sk->sk_reuse;
1154                 break;
1155
1156         case SO_REUSEPORT:
1157                 v.val = sk->sk_reuseport;
1158                 break;
1159
1160         case SO_KEEPALIVE:
1161                 v.val = sock_flag(sk, SOCK_KEEPOPEN);
1162                 break;
1163
1164         case SO_TYPE:
1165                 v.val = sk->sk_type;
1166                 break;
1167
1168         case SO_PROTOCOL:
1169                 v.val = sk->sk_protocol;
1170                 break;
1171
1172         case SO_DOMAIN:
1173                 v.val = sk->sk_family;
1174                 break;
1175
1176         case SO_ERROR:
1177                 v.val = -sock_error(sk);
1178                 if (v.val == 0)
1179                         v.val = xchg(&sk->sk_err_soft, 0);
1180                 break;
1181
1182         case SO_OOBINLINE:
1183                 v.val = sock_flag(sk, SOCK_URGINLINE);
1184                 break;
1185
1186         case SO_NO_CHECK:
1187                 v.val = sk->sk_no_check_tx;
1188                 break;
1189
1190         case SO_PRIORITY:
1191                 v.val = sk->sk_priority;
1192                 break;
1193
1194         case SO_LINGER:
1195                 lv              = sizeof(v.ling);
1196                 v.ling.l_onoff  = sock_flag(sk, SOCK_LINGER);
1197                 v.ling.l_linger = sk->sk_lingertime / HZ;
1198                 break;
1199
1200         case SO_BSDCOMPAT:
1201                 sock_warn_obsolete_bsdism("getsockopt");
1202                 break;
1203
1204         case SO_TIMESTAMP:
1205                 v.val = sock_flag(sk, SOCK_RCVTSTAMP) &&
1206                                 !sock_flag(sk, SOCK_RCVTSTAMPNS);
1207                 break;
1208
1209         case SO_TIMESTAMPNS:
1210                 v.val = sock_flag(sk, SOCK_RCVTSTAMPNS);
1211                 break;
1212
1213         case SO_TIMESTAMPING:
1214                 v.val = sk->sk_tsflags;
1215                 break;
1216
1217         case SO_RCVTIMEO:
1218                 lv = sizeof(struct timeval);
1219                 if (sk->sk_rcvtimeo == MAX_SCHEDULE_TIMEOUT) {
1220                         v.tm.tv_sec = 0;
1221                         v.tm.tv_usec = 0;
1222                 } else {
1223                         v.tm.tv_sec = sk->sk_rcvtimeo / HZ;
1224                         v.tm.tv_usec = ((sk->sk_rcvtimeo % HZ) * USEC_PER_SEC) / HZ;
1225                 }
1226                 break;
1227
1228         case SO_SNDTIMEO:
1229                 lv = sizeof(struct timeval);
1230                 if (sk->sk_sndtimeo == MAX_SCHEDULE_TIMEOUT) {
1231                         v.tm.tv_sec = 0;
1232                         v.tm.tv_usec = 0;
1233                 } else {
1234                         v.tm.tv_sec = sk->sk_sndtimeo / HZ;
1235                         v.tm.tv_usec = ((sk->sk_sndtimeo % HZ) * USEC_PER_SEC) / HZ;
1236                 }
1237                 break;
1238
1239         case SO_RCVLOWAT:
1240                 v.val = sk->sk_rcvlowat;
1241                 break;
1242
1243         case SO_SNDLOWAT:
1244                 v.val = 1;
1245                 break;
1246
1247         case SO_PASSCRED:
1248                 v.val = !!test_bit(SOCK_PASSCRED, &sock->flags);
1249                 break;
1250
1251         case SO_PEERCRED:
1252         {
1253                 struct ucred peercred;
1254                 if (len > sizeof(peercred))
1255                         len = sizeof(peercred);
1256
1257                 spin_lock(&sk->sk_peer_lock);
1258                 cred_to_ucred(sk->sk_peer_pid, sk->sk_peer_cred, &peercred);
1259                 spin_unlock(&sk->sk_peer_lock);
1260
1261                 if (copy_to_user(optval, &peercred, len))
1262                         return -EFAULT;
1263                 goto lenout;
1264         }
1265
1266         case SO_PEERGROUPS:
1267         {
1268                 const struct cred *cred;
1269                 int ret, n;
1270
1271                 cred = sk_get_peer_cred(sk);
1272                 if (!cred)
1273                         return -ENODATA;
1274
1275                 n = cred->group_info->ngroups;
1276                 if (len < n * sizeof(gid_t)) {
1277                         len = n * sizeof(gid_t);
1278                         put_cred(cred);
1279                         return put_user(len, optlen) ? -EFAULT : -ERANGE;
1280                 }
1281                 len = n * sizeof(gid_t);
1282
1283                 ret = groups_to_user((gid_t __user *)optval, cred->group_info);
1284                 put_cred(cred);
1285                 if (ret)
1286                         return ret;
1287                 goto lenout;
1288         }
1289
1290         case SO_PEERNAME:
1291         {
1292                 char address[128];
1293
1294                 if (sock->ops->getname(sock, (struct sockaddr *)address, &lv, 2))
1295                         return -ENOTCONN;
1296                 if (lv < len)
1297                         return -EINVAL;
1298                 if (copy_to_user(optval, address, len))
1299                         return -EFAULT;
1300                 goto lenout;
1301         }
1302
1303         /* Dubious BSD thing... Probably nobody even uses it, but
1304          * the UNIX standard wants it for whatever reason... -DaveM
1305          */
1306         case SO_ACCEPTCONN:
1307                 v.val = sk->sk_state == TCP_LISTEN;
1308                 break;
1309
1310         case SO_PASSSEC:
1311                 v.val = !!test_bit(SOCK_PASSSEC, &sock->flags);
1312                 break;
1313
1314         case SO_PEERSEC:
1315                 return security_socket_getpeersec_stream(sock, optval, optlen, len);
1316
1317         case SO_MARK:
1318                 v.val = sk->sk_mark;
1319                 break;
1320
1321         case SO_RXQ_OVFL:
1322                 v.val = sock_flag(sk, SOCK_RXQ_OVFL);
1323                 break;
1324
1325         case SO_WIFI_STATUS:
1326                 v.val = sock_flag(sk, SOCK_WIFI_STATUS);
1327                 break;
1328
1329         case SO_PEEK_OFF:
1330                 if (!sock->ops->set_peek_off)
1331                         return -EOPNOTSUPP;
1332
1333                 v.val = READ_ONCE(sk->sk_peek_off);
1334                 break;
1335         case SO_NOFCS:
1336                 v.val = sock_flag(sk, SOCK_NOFCS);
1337                 break;
1338
1339         case SO_BINDTODEVICE:
1340                 return sock_getbindtodevice(sk, optval, optlen, len);
1341
1342         case SO_GET_FILTER:
1343                 len = sk_get_filter(sk, (struct sock_filter __user *)optval, len);
1344                 if (len < 0)
1345                         return len;
1346
1347                 goto lenout;
1348
1349         case SO_LOCK_FILTER:
1350                 v.val = sock_flag(sk, SOCK_FILTER_LOCKED);
1351                 break;
1352
1353         case SO_BPF_EXTENSIONS:
1354                 v.val = bpf_tell_extensions();
1355                 break;
1356
1357         case SO_SELECT_ERR_QUEUE:
1358                 v.val = sock_flag(sk, SOCK_SELECT_ERR_QUEUE);
1359                 break;
1360
1361 #ifdef CONFIG_NET_RX_BUSY_POLL
1362         case SO_BUSY_POLL:
1363                 v.val = READ_ONCE(sk->sk_ll_usec);
1364                 break;
1365 #endif
1366
1367         case SO_MAX_PACING_RATE:
1368                 v.val = sk->sk_max_pacing_rate;
1369                 break;
1370
1371         case SO_INCOMING_CPU:
1372                 v.val = READ_ONCE(sk->sk_incoming_cpu);
1373                 break;
1374
1375         case SO_MEMINFO:
1376         {
1377                 u32 meminfo[SK_MEMINFO_VARS];
1378
1379                 sk_get_meminfo(sk, meminfo);
1380
1381                 len = min_t(unsigned int, len, sizeof(meminfo));
1382                 if (copy_to_user(optval, &meminfo, len))
1383                         return -EFAULT;
1384
1385                 goto lenout;
1386         }
1387
1388 #ifdef CONFIG_NET_RX_BUSY_POLL
1389         case SO_INCOMING_NAPI_ID:
1390                 v.val = READ_ONCE(sk->sk_napi_id);
1391
1392                 /* aggregate non-NAPI IDs down to 0 */
1393                 if (v.val < MIN_NAPI_ID)
1394                         v.val = 0;
1395
1396                 break;
1397 #endif
1398
1399         case SO_COOKIE:
1400                 lv = sizeof(u64);
1401                 if (len < lv)
1402                         return -EINVAL;
1403                 v.val64 = sock_gen_cookie(sk);
1404                 break;
1405
1406         case SO_ZEROCOPY:
1407                 v.val = sock_flag(sk, SOCK_ZEROCOPY);
1408                 break;
1409
1410         default:
1411                 /* We implement the SO_SNDLOWAT etc to not be settable
1412                  * (1003.1g 7).
1413                  */
1414                 return -ENOPROTOOPT;
1415         }
1416
1417         if (len > lv)
1418                 len = lv;
1419         if (copy_to_user(optval, &v, len))
1420                 return -EFAULT;
1421 lenout:
1422         if (put_user(len, optlen))
1423                 return -EFAULT;
1424         return 0;
1425 }
1426
1427 /*
1428  * Initialize an sk_lock.
1429  *
1430  * (We also register the sk_lock with the lock validator.)
1431  */
1432 static inline void sock_lock_init(struct sock *sk)
1433 {
1434         if (sk->sk_kern_sock)
1435                 sock_lock_init_class_and_name(
1436                         sk,
1437                         af_family_kern_slock_key_strings[sk->sk_family],
1438                         af_family_kern_slock_keys + sk->sk_family,
1439                         af_family_kern_key_strings[sk->sk_family],
1440                         af_family_kern_keys + sk->sk_family);
1441         else
1442                 sock_lock_init_class_and_name(
1443                         sk,
1444                         af_family_slock_key_strings[sk->sk_family],
1445                         af_family_slock_keys + sk->sk_family,
1446                         af_family_key_strings[sk->sk_family],
1447                         af_family_keys + sk->sk_family);
1448 }
1449
1450 /*
1451  * Copy all fields from osk to nsk but nsk->sk_refcnt must not change yet,
1452  * even temporarly, because of RCU lookups. sk_node should also be left as is.
1453  * We must not copy fields between sk_dontcopy_begin and sk_dontcopy_end
1454  */
1455 static void sock_copy(struct sock *nsk, const struct sock *osk)
1456 {
1457 #ifdef CONFIG_SECURITY_NETWORK
1458         void *sptr = nsk->sk_security;
1459 #endif
1460         memcpy(nsk, osk, offsetof(struct sock, sk_dontcopy_begin));
1461
1462         memcpy(&nsk->sk_dontcopy_end, &osk->sk_dontcopy_end,
1463                osk->sk_prot->obj_size - offsetof(struct sock, sk_dontcopy_end));
1464
1465 #ifdef CONFIG_SECURITY_NETWORK
1466         nsk->sk_security = sptr;
1467         security_sk_clone(osk, nsk);
1468 #endif
1469 }
1470
1471 static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
1472                 int family)
1473 {
1474         struct sock *sk;
1475         struct kmem_cache *slab;
1476
1477         slab = prot->slab;
1478         if (slab != NULL) {
1479                 sk = kmem_cache_alloc(slab, priority & ~__GFP_ZERO);
1480                 if (!sk)
1481                         return sk;
1482                 if (priority & __GFP_ZERO)
1483                         sk_prot_clear_nulls(sk, prot->obj_size);
1484         } else
1485                 sk = kmalloc(prot->obj_size, priority);
1486
1487         if (sk != NULL) {
1488                 if (security_sk_alloc(sk, family, priority))
1489                         goto out_free;
1490
1491                 if (!try_module_get(prot->owner))
1492                         goto out_free_sec;
1493                 sk_tx_queue_clear(sk);
1494         }
1495
1496         return sk;
1497
1498 out_free_sec:
1499         security_sk_free(sk);
1500 out_free:
1501         if (slab != NULL)
1502                 kmem_cache_free(slab, sk);
1503         else
1504                 kfree(sk);
1505         return NULL;
1506 }
1507
1508 static void sk_prot_free(struct proto *prot, struct sock *sk)
1509 {
1510         struct kmem_cache *slab;
1511         struct module *owner;
1512
1513         owner = prot->owner;
1514         slab = prot->slab;
1515
1516         cgroup_sk_free(&sk->sk_cgrp_data);
1517         mem_cgroup_sk_free(sk);
1518         security_sk_free(sk);
1519         if (slab != NULL)
1520                 kmem_cache_free(slab, sk);
1521         else
1522                 kfree(sk);
1523         module_put(owner);
1524 }
1525
1526 /**
1527  *      sk_alloc - All socket objects are allocated here
1528  *      @net: the applicable net namespace
1529  *      @family: protocol family
1530  *      @priority: for allocation (%GFP_KERNEL, %GFP_ATOMIC, etc)
1531  *      @prot: struct proto associated with this new sock instance
1532  *      @kern: is this to be a kernel socket?
1533  */
1534 struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
1535                       struct proto *prot, int kern)
1536 {
1537         struct sock *sk;
1538
1539         sk = sk_prot_alloc(prot, priority | __GFP_ZERO, family);
1540         if (sk) {
1541                 sk->sk_family = family;
1542                 /*
1543                  * See comment in struct sock definition to understand
1544                  * why we need sk_prot_creator -acme
1545                  */
1546                 sk->sk_prot = sk->sk_prot_creator = prot;
1547                 sk->sk_kern_sock = kern;
1548                 sock_lock_init(sk);
1549                 sk->sk_net_refcnt = kern ? 0 : 1;
1550                 if (likely(sk->sk_net_refcnt))
1551                         get_net(net);
1552                 sock_net_set(sk, net);
1553                 refcount_set(&sk->sk_wmem_alloc, 1);
1554
1555                 mem_cgroup_sk_alloc(sk);
1556                 cgroup_sk_alloc(&sk->sk_cgrp_data);
1557                 sock_update_classid(&sk->sk_cgrp_data);
1558                 sock_update_netprioidx(&sk->sk_cgrp_data);
1559                 sk_tx_queue_clear(sk);
1560         }
1561
1562         return sk;
1563 }
1564 EXPORT_SYMBOL(sk_alloc);
1565
1566 /* Sockets having SOCK_RCU_FREE will call this function after one RCU
1567  * grace period. This is the case for UDP sockets and TCP listeners.
1568  */
1569 static void __sk_destruct(struct rcu_head *head)
1570 {
1571         struct sock *sk = container_of(head, struct sock, sk_rcu);
1572         struct sk_filter *filter;
1573
1574         if (sk->sk_destruct)
1575                 sk->sk_destruct(sk);
1576
1577         filter = rcu_dereference_check(sk->sk_filter,
1578                                        refcount_read(&sk->sk_wmem_alloc) == 0);
1579         if (filter) {
1580                 sk_filter_uncharge(sk, filter);
1581                 RCU_INIT_POINTER(sk->sk_filter, NULL);
1582         }
1583
1584         sock_disable_timestamp(sk, SK_FLAGS_TIMESTAMP);
1585
1586         if (atomic_read(&sk->sk_omem_alloc))
1587                 pr_debug("%s: optmem leakage (%d bytes) detected\n",
1588                          __func__, atomic_read(&sk->sk_omem_alloc));
1589
1590         if (sk->sk_frag.page) {
1591                 put_page(sk->sk_frag.page);
1592                 sk->sk_frag.page = NULL;
1593         }
1594
1595         /* We do not need to acquire sk->sk_peer_lock, we are the last user. */
1596         put_cred(sk->sk_peer_cred);
1597         put_pid(sk->sk_peer_pid);
1598
1599         if (likely(sk->sk_net_refcnt))
1600                 put_net(sock_net(sk));
1601         sk_prot_free(sk->sk_prot_creator, sk);
1602 }
1603
1604 void sk_destruct(struct sock *sk)
1605 {
1606         bool use_call_rcu = sock_flag(sk, SOCK_RCU_FREE);
1607
1608         if (rcu_access_pointer(sk->sk_reuseport_cb)) {
1609                 reuseport_detach_sock(sk);
1610                 use_call_rcu = true;
1611         }
1612
1613         if (use_call_rcu)
1614                 call_rcu(&sk->sk_rcu, __sk_destruct);
1615         else
1616                 __sk_destruct(&sk->sk_rcu);
1617 }
1618
1619 static void __sk_free(struct sock *sk)
1620 {
1621         if (unlikely(sk->sk_net_refcnt && sock_diag_has_destroy_listeners(sk)))
1622                 sock_diag_broadcast_destroy(sk);
1623         else
1624                 sk_destruct(sk);
1625 }
1626
1627 void sk_free(struct sock *sk)
1628 {
1629         /*
1630          * We subtract one from sk_wmem_alloc and can know if
1631          * some packets are still in some tx queue.
1632          * If not null, sock_wfree() will call __sk_free(sk) later
1633          */
1634         if (refcount_dec_and_test(&sk->sk_wmem_alloc))
1635                 __sk_free(sk);
1636 }
1637 EXPORT_SYMBOL(sk_free);
1638
1639 static void sk_init_common(struct sock *sk)
1640 {
1641         skb_queue_head_init(&sk->sk_receive_queue);
1642         skb_queue_head_init(&sk->sk_write_queue);
1643         skb_queue_head_init(&sk->sk_error_queue);
1644
1645         rwlock_init(&sk->sk_callback_lock);
1646         lockdep_set_class_and_name(&sk->sk_receive_queue.lock,
1647                         af_rlock_keys + sk->sk_family,
1648                         af_family_rlock_key_strings[sk->sk_family]);
1649         lockdep_set_class_and_name(&sk->sk_write_queue.lock,
1650                         af_wlock_keys + sk->sk_family,
1651                         af_family_wlock_key_strings[sk->sk_family]);
1652         lockdep_set_class_and_name(&sk->sk_error_queue.lock,
1653                         af_elock_keys + sk->sk_family,
1654                         af_family_elock_key_strings[sk->sk_family]);
1655         lockdep_set_class_and_name(&sk->sk_callback_lock,
1656                         af_callback_keys + sk->sk_family,
1657                         af_family_clock_key_strings[sk->sk_family]);
1658 }
1659
1660 /**
1661  *      sk_clone_lock - clone a socket, and lock its clone
1662  *      @sk: the socket to clone
1663  *      @priority: for allocation (%GFP_KERNEL, %GFP_ATOMIC, etc)
1664  *
1665  *      Caller must unlock socket even in error path (bh_unlock_sock(newsk))
1666  */
1667 struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority)
1668 {
1669         struct sock *newsk;
1670         bool is_charged = true;
1671
1672         newsk = sk_prot_alloc(sk->sk_prot, priority, sk->sk_family);
1673         if (newsk != NULL) {
1674                 struct sk_filter *filter;
1675
1676                 sock_copy(newsk, sk);
1677
1678                 newsk->sk_prot_creator = sk->sk_prot;
1679
1680                 /* SANITY */
1681                 if (likely(newsk->sk_net_refcnt))
1682                         get_net(sock_net(newsk));
1683                 sk_node_init(&newsk->sk_node);
1684                 sock_lock_init(newsk);
1685                 bh_lock_sock(newsk);
1686                 newsk->sk_backlog.head  = newsk->sk_backlog.tail = NULL;
1687                 newsk->sk_backlog.len = 0;
1688
1689                 atomic_set(&newsk->sk_rmem_alloc, 0);
1690                 /*
1691                  * sk_wmem_alloc set to one (see sk_free() and sock_wfree())
1692                  */
1693                 refcount_set(&newsk->sk_wmem_alloc, 1);
1694                 atomic_set(&newsk->sk_omem_alloc, 0);
1695                 sk_init_common(newsk);
1696
1697                 newsk->sk_dst_cache     = NULL;
1698                 newsk->sk_dst_pending_confirm = 0;
1699                 newsk->sk_wmem_queued   = 0;
1700                 newsk->sk_forward_alloc = 0;
1701                 atomic_set(&newsk->sk_drops, 0);
1702                 newsk->sk_send_head     = NULL;
1703                 newsk->sk_userlocks     = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK;
1704                 atomic_set(&newsk->sk_zckey, 0);
1705
1706                 sock_reset_flag(newsk, SOCK_DONE);
1707
1708                 /* sk->sk_memcg will be populated at accept() time */
1709                 newsk->sk_memcg = NULL;
1710
1711                 cgroup_sk_clone(&newsk->sk_cgrp_data);
1712
1713                 rcu_read_lock();
1714                 filter = rcu_dereference(sk->sk_filter);
1715                 if (filter != NULL)
1716                         /* though it's an empty new sock, the charging may fail
1717                          * if sysctl_optmem_max was changed between creation of
1718                          * original socket and cloning
1719                          */
1720                         is_charged = sk_filter_charge(newsk, filter);
1721                 RCU_INIT_POINTER(newsk->sk_filter, filter);
1722                 rcu_read_unlock();
1723
1724                 if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk, sk))) {
1725                         /* We need to make sure that we don't uncharge the new
1726                          * socket if we couldn't charge it in the first place
1727                          * as otherwise we uncharge the parent's filter.
1728                          */
1729                         if (!is_charged)
1730                                 RCU_INIT_POINTER(newsk->sk_filter, NULL);
1731                         sk_free_unlock_clone(newsk);
1732                         newsk = NULL;
1733                         goto out;
1734                 }
1735                 RCU_INIT_POINTER(newsk->sk_reuseport_cb, NULL);
1736
1737                 newsk->sk_err      = 0;
1738                 newsk->sk_err_soft = 0;
1739                 newsk->sk_priority = 0;
1740                 newsk->sk_incoming_cpu = raw_smp_processor_id();
1741                 atomic64_set(&newsk->sk_cookie, 0);
1742
1743                 /*
1744                  * Before updating sk_refcnt, we must commit prior changes to memory
1745                  * (Documentation/RCU/rculist_nulls.txt for details)
1746                  */
1747                 smp_wmb();
1748                 refcount_set(&newsk->sk_refcnt, 2);
1749
1750                 /*
1751                  * Increment the counter in the same struct proto as the master
1752                  * sock (sk_refcnt_debug_inc uses newsk->sk_prot->socks, that
1753                  * is the same as sk->sk_prot->socks, as this field was copied
1754                  * with memcpy).
1755                  *
1756                  * This _changes_ the previous behaviour, where
1757                  * tcp_create_openreq_child always was incrementing the
1758                  * equivalent to tcp_prot->socks (inet_sock_nr), so this have
1759                  * to be taken into account in all callers. -acme
1760                  */
1761                 sk_refcnt_debug_inc(newsk);
1762                 sk_set_socket(newsk, NULL);
1763                 sk_tx_queue_clear(newsk);
1764                 newsk->sk_wq = NULL;
1765
1766                 if (newsk->sk_prot->sockets_allocated)
1767                         sk_sockets_allocated_inc(newsk);
1768
1769                 if (sock_needs_netstamp(sk) &&
1770                     newsk->sk_flags & SK_FLAGS_TIMESTAMP)
1771                         net_enable_timestamp();
1772         }
1773 out:
1774         return newsk;
1775 }
1776 EXPORT_SYMBOL_GPL(sk_clone_lock);
1777
1778 void sk_free_unlock_clone(struct sock *sk)
1779 {
1780         /* It is still raw copy of parent, so invalidate
1781          * destructor and make plain sk_free() */
1782         sk->sk_destruct = NULL;
1783         bh_unlock_sock(sk);
1784         sk_free(sk);
1785 }
1786 EXPORT_SYMBOL_GPL(sk_free_unlock_clone);
1787
1788 void sk_setup_caps(struct sock *sk, struct dst_entry *dst)
1789 {
1790         u32 max_segs = 1;
1791
1792         sk->sk_route_caps = dst->dev->features;
1793         if (sk->sk_route_caps & NETIF_F_GSO)
1794                 sk->sk_route_caps |= NETIF_F_GSO_SOFTWARE;
1795         sk->sk_route_caps &= ~sk->sk_route_nocaps;
1796         if (sk_can_gso(sk)) {
1797                 if (dst->header_len && !xfrm_dst_offload_ok(dst)) {
1798                         sk->sk_route_caps &= ~NETIF_F_GSO_MASK;
1799                 } else {
1800                         sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM;
1801                         sk->sk_gso_max_size = dst->dev->gso_max_size;
1802                         max_segs = max_t(u32, dst->dev->gso_max_segs, 1);
1803                 }
1804         }
1805         sk->sk_gso_max_segs = max_segs;
1806         sk_dst_set(sk, dst);
1807 }
1808 EXPORT_SYMBOL_GPL(sk_setup_caps);
1809
1810 /*
1811  *      Simple resource managers for sockets.
1812  */
1813
1814
1815 /*
1816  * Write buffer destructor automatically called from kfree_skb.
1817  */
1818 void sock_wfree(struct sk_buff *skb)
1819 {
1820         struct sock *sk = skb->sk;
1821         unsigned int len = skb->truesize;
1822
1823         if (!sock_flag(sk, SOCK_USE_WRITE_QUEUE)) {
1824                 /*
1825                  * Keep a reference on sk_wmem_alloc, this will be released
1826                  * after sk_write_space() call
1827                  */
1828                 WARN_ON(refcount_sub_and_test(len - 1, &sk->sk_wmem_alloc));
1829                 sk->sk_write_space(sk);
1830                 len = 1;
1831         }
1832         /*
1833          * if sk_wmem_alloc reaches 0, we must finish what sk_free()
1834          * could not do because of in-flight packets
1835          */
1836         if (refcount_sub_and_test(len, &sk->sk_wmem_alloc))
1837                 __sk_free(sk);
1838 }
1839 EXPORT_SYMBOL(sock_wfree);
1840
1841 /* This variant of sock_wfree() is used by TCP,
1842  * since it sets SOCK_USE_WRITE_QUEUE.
1843  */
1844 void __sock_wfree(struct sk_buff *skb)
1845 {
1846         struct sock *sk = skb->sk;
1847
1848         if (refcount_sub_and_test(skb->truesize, &sk->sk_wmem_alloc))
1849                 __sk_free(sk);
1850 }
1851
1852 void skb_set_owner_w(struct sk_buff *skb, struct sock *sk)
1853 {
1854         skb_orphan(skb);
1855         skb->sk = sk;
1856 #ifdef CONFIG_INET
1857         if (unlikely(!sk_fullsock(sk))) {
1858                 skb->destructor = sock_edemux;
1859                 sock_hold(sk);
1860                 return;
1861         }
1862 #endif
1863         skb->destructor = sock_wfree;
1864         skb_set_hash_from_sk(skb, sk);
1865         /*
1866          * We used to take a refcount on sk, but following operation
1867          * is enough to guarantee sk_free() wont free this sock until
1868          * all in-flight packets are completed
1869          */
1870         refcount_add(skb->truesize, &sk->sk_wmem_alloc);
1871 }
1872 EXPORT_SYMBOL(skb_set_owner_w);
1873
1874 /* This helper is used by netem, as it can hold packets in its
1875  * delay queue. We want to allow the owner socket to send more
1876  * packets, as if they were already TX completed by a typical driver.
1877  * But we also want to keep skb->sk set because some packet schedulers
1878  * rely on it (sch_fq for example).
1879  */
1880 void skb_orphan_partial(struct sk_buff *skb)
1881 {
1882         if (skb_is_tcp_pure_ack(skb))
1883                 return;
1884
1885         if (skb->destructor == sock_wfree
1886 #ifdef CONFIG_INET
1887             || skb->destructor == tcp_wfree
1888 #endif
1889                 ) {
1890                 struct sock *sk = skb->sk;
1891
1892                 if (refcount_inc_not_zero(&sk->sk_refcnt)) {
1893                         WARN_ON(refcount_sub_and_test(skb->truesize, &sk->sk_wmem_alloc));
1894                         skb->destructor = sock_efree;
1895                 }
1896         } else {
1897                 skb_orphan(skb);
1898         }
1899 }
1900 EXPORT_SYMBOL(skb_orphan_partial);
1901
1902 /*
1903  * Read buffer destructor automatically called from kfree_skb.
1904  */
1905 void sock_rfree(struct sk_buff *skb)
1906 {
1907         struct sock *sk = skb->sk;
1908         unsigned int len = skb->truesize;
1909
1910         atomic_sub(len, &sk->sk_rmem_alloc);
1911         sk_mem_uncharge(sk, len);
1912 }
1913 EXPORT_SYMBOL(sock_rfree);
1914
1915 /*
1916  * Buffer destructor for skbs that are not used directly in read or write
1917  * path, e.g. for error handler skbs. Automatically called from kfree_skb.
1918  */
1919 void sock_efree(struct sk_buff *skb)
1920 {
1921         sock_put(skb->sk);
1922 }
1923 EXPORT_SYMBOL(sock_efree);
1924
1925 kuid_t sock_i_uid(struct sock *sk)
1926 {
1927         kuid_t uid;
1928
1929         read_lock_bh(&sk->sk_callback_lock);
1930         uid = sk->sk_socket ? SOCK_INODE(sk->sk_socket)->i_uid : GLOBAL_ROOT_UID;
1931         read_unlock_bh(&sk->sk_callback_lock);
1932         return uid;
1933 }
1934 EXPORT_SYMBOL(sock_i_uid);
1935
1936 unsigned long __sock_i_ino(struct sock *sk)
1937 {
1938         unsigned long ino;
1939
1940         read_lock(&sk->sk_callback_lock);
1941         ino = sk->sk_socket ? SOCK_INODE(sk->sk_socket)->i_ino : 0;
1942         read_unlock(&sk->sk_callback_lock);
1943         return ino;
1944 }
1945 EXPORT_SYMBOL(__sock_i_ino);
1946
1947 unsigned long sock_i_ino(struct sock *sk)
1948 {
1949         unsigned long ino;
1950
1951         local_bh_disable();
1952         ino = __sock_i_ino(sk);
1953         local_bh_enable();
1954         return ino;
1955 }
1956 EXPORT_SYMBOL(sock_i_ino);
1957
1958 /*
1959  * Allocate a skb from the socket's send buffer.
1960  */
1961 struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force,
1962                              gfp_t priority)
1963 {
1964         if (force || refcount_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) {
1965                 struct sk_buff *skb = alloc_skb(size, priority);
1966                 if (skb) {
1967                         skb_set_owner_w(skb, sk);
1968                         return skb;
1969                 }
1970         }
1971         return NULL;
1972 }
1973 EXPORT_SYMBOL(sock_wmalloc);
1974
1975 static void sock_ofree(struct sk_buff *skb)
1976 {
1977         struct sock *sk = skb->sk;
1978
1979         atomic_sub(skb->truesize, &sk->sk_omem_alloc);
1980 }
1981
1982 struct sk_buff *sock_omalloc(struct sock *sk, unsigned long size,
1983                              gfp_t priority)
1984 {
1985         struct sk_buff *skb;
1986
1987         /* small safe race: SKB_TRUESIZE may differ from final skb->truesize */
1988         if (atomic_read(&sk->sk_omem_alloc) + SKB_TRUESIZE(size) >
1989             sysctl_optmem_max)
1990                 return NULL;
1991
1992         skb = alloc_skb(size, priority);
1993         if (!skb)
1994                 return NULL;
1995
1996         atomic_add(skb->truesize, &sk->sk_omem_alloc);
1997         skb->sk = sk;
1998         skb->destructor = sock_ofree;
1999         return skb;
2000 }
2001
2002 /*
2003  * Allocate a memory block from the socket's option memory buffer.
2004  */
2005 void *sock_kmalloc(struct sock *sk, int size, gfp_t priority)
2006 {
2007         if ((unsigned int)size <= sysctl_optmem_max &&
2008             atomic_read(&sk->sk_omem_alloc) + size < sysctl_optmem_max) {
2009                 void *mem;
2010                 /* First do the add, to avoid the race if kmalloc
2011                  * might sleep.
2012                  */
2013                 atomic_add(size, &sk->sk_omem_alloc);
2014                 mem = kmalloc(size, priority);
2015                 if (mem)
2016                         return mem;
2017                 atomic_sub(size, &sk->sk_omem_alloc);
2018         }
2019         return NULL;
2020 }
2021 EXPORT_SYMBOL(sock_kmalloc);
2022
2023 /* Free an option memory block. Note, we actually want the inline
2024  * here as this allows gcc to detect the nullify and fold away the
2025  * condition entirely.
2026  */
2027 static inline void __sock_kfree_s(struct sock *sk, void *mem, int size,
2028                                   const bool nullify)
2029 {
2030         if (WARN_ON_ONCE(!mem))
2031                 return;
2032         if (nullify)
2033                 kzfree(mem);
2034         else
2035                 kfree(mem);
2036         atomic_sub(size, &sk->sk_omem_alloc);
2037 }
2038
2039 void sock_kfree_s(struct sock *sk, void *mem, int size)
2040 {
2041         __sock_kfree_s(sk, mem, size, false);
2042 }
2043 EXPORT_SYMBOL(sock_kfree_s);
2044
2045 void sock_kzfree_s(struct sock *sk, void *mem, int size)
2046 {
2047         __sock_kfree_s(sk, mem, size, true);
2048 }
2049 EXPORT_SYMBOL(sock_kzfree_s);
2050
2051 /* It is almost wait_for_tcp_memory minus release_sock/lock_sock.
2052    I think, these locks should be removed for datagram sockets.
2053  */
2054 static long sock_wait_for_wmem(struct sock *sk, long timeo)
2055 {
2056         DEFINE_WAIT(wait);
2057
2058         sk_clear_bit(SOCKWQ_ASYNC_NOSPACE, sk);
2059         for (;;) {
2060                 if (!timeo)
2061                         break;
2062                 if (signal_pending(current))
2063                         break;
2064                 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
2065                 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
2066                 if (refcount_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf)
2067                         break;
2068                 if (READ_ONCE(sk->sk_shutdown) & SEND_SHUTDOWN)
2069                         break;
2070                 if (READ_ONCE(sk->sk_err))
2071                         break;
2072                 timeo = schedule_timeout(timeo);
2073         }
2074         finish_wait(sk_sleep(sk), &wait);
2075         return timeo;
2076 }
2077
2078
2079 /*
2080  *      Generic send/receive buffer handlers
2081  */
2082
2083 struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len,
2084                                      unsigned long data_len, int noblock,
2085                                      int *errcode, int max_page_order)
2086 {
2087         struct sk_buff *skb;
2088         long timeo;
2089         int err;
2090
2091         timeo = sock_sndtimeo(sk, noblock);
2092         for (;;) {
2093                 err = sock_error(sk);
2094                 if (err != 0)
2095                         goto failure;
2096
2097                 err = -EPIPE;
2098                 if (READ_ONCE(sk->sk_shutdown) & SEND_SHUTDOWN)
2099                         goto failure;
2100
2101                 if (sk_wmem_alloc_get(sk) < sk->sk_sndbuf)
2102                         break;
2103
2104                 sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk);
2105                 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
2106                 err = -EAGAIN;
2107                 if (!timeo)
2108                         goto failure;
2109                 if (signal_pending(current))
2110                         goto interrupted;
2111                 timeo = sock_wait_for_wmem(sk, timeo);
2112         }
2113         skb = alloc_skb_with_frags(header_len, data_len, max_page_order,
2114                                    errcode, sk->sk_allocation);
2115         if (skb)
2116                 skb_set_owner_w(skb, sk);
2117         return skb;
2118
2119 interrupted:
2120         err = sock_intr_errno(timeo);
2121 failure:
2122         *errcode = err;
2123         return NULL;
2124 }
2125 EXPORT_SYMBOL(sock_alloc_send_pskb);
2126
2127 struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size,
2128                                     int noblock, int *errcode)
2129 {
2130         return sock_alloc_send_pskb(sk, size, 0, noblock, errcode, 0);
2131 }
2132 EXPORT_SYMBOL(sock_alloc_send_skb);
2133
2134 int __sock_cmsg_send(struct sock *sk, struct msghdr *msg, struct cmsghdr *cmsg,
2135                      struct sockcm_cookie *sockc)
2136 {
2137         u32 tsflags;
2138
2139         switch (cmsg->cmsg_type) {
2140         case SO_MARK:
2141                 if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN))
2142                         return -EPERM;
2143                 if (cmsg->cmsg_len != CMSG_LEN(sizeof(u32)))
2144                         return -EINVAL;
2145                 sockc->mark = *(u32 *)CMSG_DATA(cmsg);
2146                 break;
2147         case SO_TIMESTAMPING:
2148                 if (cmsg->cmsg_len != CMSG_LEN(sizeof(u32)))
2149                         return -EINVAL;
2150
2151                 tsflags = *(u32 *)CMSG_DATA(cmsg);
2152                 if (tsflags & ~SOF_TIMESTAMPING_TX_RECORD_MASK)
2153                         return -EINVAL;
2154
2155                 sockc->tsflags &= ~SOF_TIMESTAMPING_TX_RECORD_MASK;
2156                 sockc->tsflags |= tsflags;
2157                 break;
2158         /* SCM_RIGHTS and SCM_CREDENTIALS are semantically in SOL_UNIX. */
2159         case SCM_RIGHTS:
2160         case SCM_CREDENTIALS:
2161                 break;
2162         default:
2163                 return -EINVAL;
2164         }
2165         return 0;
2166 }
2167 EXPORT_SYMBOL(__sock_cmsg_send);
2168
2169 int sock_cmsg_send(struct sock *sk, struct msghdr *msg,
2170                    struct sockcm_cookie *sockc)
2171 {
2172         struct cmsghdr *cmsg;
2173         int ret;
2174
2175         for_each_cmsghdr(cmsg, msg) {
2176                 if (!CMSG_OK(msg, cmsg))
2177                         return -EINVAL;
2178                 if (cmsg->cmsg_level != SOL_SOCKET)
2179                         continue;
2180                 ret = __sock_cmsg_send(sk, msg, cmsg, sockc);
2181                 if (ret)
2182                         return ret;
2183         }
2184         return 0;
2185 }
2186 EXPORT_SYMBOL(sock_cmsg_send);
2187
2188 static void sk_enter_memory_pressure(struct sock *sk)
2189 {
2190         if (!sk->sk_prot->enter_memory_pressure)
2191                 return;
2192
2193         sk->sk_prot->enter_memory_pressure(sk);
2194 }
2195
2196 static void sk_leave_memory_pressure(struct sock *sk)
2197 {
2198         if (sk->sk_prot->leave_memory_pressure) {
2199                 sk->sk_prot->leave_memory_pressure(sk);
2200         } else {
2201                 unsigned long *memory_pressure = sk->sk_prot->memory_pressure;
2202
2203                 if (memory_pressure && READ_ONCE(*memory_pressure))
2204                         WRITE_ONCE(*memory_pressure, 0);
2205         }
2206 }
2207
2208 /**
2209  * skb_page_frag_refill - check that a page_frag contains enough room
2210  * @sz: minimum size of the fragment we want to get
2211  * @pfrag: pointer to page_frag
2212  * @gfp: priority for memory allocation
2213  *
2214  * Note: While this allocator tries to use high order pages, there is
2215  * no guarantee that allocations succeed. Therefore, @sz MUST be
2216  * less or equal than PAGE_SIZE.
2217  */
2218 bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t gfp)
2219 {
2220         if (pfrag->page) {
2221                 if (page_ref_count(pfrag->page) == 1) {
2222                         pfrag->offset = 0;
2223                         return true;
2224                 }
2225                 if (pfrag->offset + sz <= pfrag->size)
2226                         return true;
2227                 put_page(pfrag->page);
2228         }
2229
2230         pfrag->offset = 0;
2231         if (SKB_FRAG_PAGE_ORDER) {
2232                 /* Avoid direct reclaim but allow kswapd to wake */
2233                 pfrag->page = alloc_pages((gfp & ~__GFP_DIRECT_RECLAIM) |
2234                                           __GFP_COMP | __GFP_NOWARN |
2235                                           __GFP_NORETRY,
2236                                           SKB_FRAG_PAGE_ORDER);
2237                 if (likely(pfrag->page)) {
2238                         pfrag->size = PAGE_SIZE << SKB_FRAG_PAGE_ORDER;
2239                         return true;
2240                 }
2241         }
2242         pfrag->page = alloc_page(gfp);
2243         if (likely(pfrag->page)) {
2244                 pfrag->size = PAGE_SIZE;
2245                 return true;
2246         }
2247         return false;
2248 }
2249 EXPORT_SYMBOL(skb_page_frag_refill);
2250
2251 bool sk_page_frag_refill(struct sock *sk, struct page_frag *pfrag)
2252 {
2253         if (likely(skb_page_frag_refill(32U, pfrag, sk->sk_allocation)))
2254                 return true;
2255
2256         sk_enter_memory_pressure(sk);
2257         sk_stream_moderate_sndbuf(sk);
2258         return false;
2259 }
2260 EXPORT_SYMBOL(sk_page_frag_refill);
2261
2262 static void __lock_sock(struct sock *sk)
2263         __releases(&sk->sk_lock.slock)
2264         __acquires(&sk->sk_lock.slock)
2265 {
2266         DEFINE_WAIT(wait);
2267
2268         for (;;) {
2269                 prepare_to_wait_exclusive(&sk->sk_lock.wq, &wait,
2270                                         TASK_UNINTERRUPTIBLE);
2271                 spin_unlock_bh(&sk->sk_lock.slock);
2272                 schedule();
2273                 spin_lock_bh(&sk->sk_lock.slock);
2274                 if (!sock_owned_by_user(sk))
2275                         break;
2276         }
2277         finish_wait(&sk->sk_lock.wq, &wait);
2278 }
2279
2280 void __release_sock(struct sock *sk)
2281         __releases(&sk->sk_lock.slock)
2282         __acquires(&sk->sk_lock.slock)
2283 {
2284         struct sk_buff *skb, *next;
2285
2286         while ((skb = sk->sk_backlog.head) != NULL) {
2287                 sk->sk_backlog.head = sk->sk_backlog.tail = NULL;
2288
2289                 spin_unlock_bh(&sk->sk_lock.slock);
2290
2291                 do {
2292                         next = skb->next;
2293                         prefetch(next);
2294                         WARN_ON_ONCE(skb_dst_is_noref(skb));
2295                         skb->next = NULL;
2296                         sk_backlog_rcv(sk, skb);
2297
2298                         cond_resched();
2299
2300                         skb = next;
2301                 } while (skb != NULL);
2302
2303                 spin_lock_bh(&sk->sk_lock.slock);
2304         }
2305
2306         /*
2307          * Doing the zeroing here guarantee we can not loop forever
2308          * while a wild producer attempts to flood us.
2309          */
2310         sk->sk_backlog.len = 0;
2311 }
2312
2313 void __sk_flush_backlog(struct sock *sk)
2314 {
2315         spin_lock_bh(&sk->sk_lock.slock);
2316         __release_sock(sk);
2317         spin_unlock_bh(&sk->sk_lock.slock);
2318 }
2319
2320 /**
2321  * sk_wait_data - wait for data to arrive at sk_receive_queue
2322  * @sk:    sock to wait on
2323  * @timeo: for how long
2324  * @skb:   last skb seen on sk_receive_queue
2325  *
2326  * Now socket state including sk->sk_err is changed only under lock,
2327  * hence we may omit checks after joining wait queue.
2328  * We check receive queue before schedule() only as optimization;
2329  * it is very likely that release_sock() added new data.
2330  */
2331 int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb)
2332 {
2333         DEFINE_WAIT_FUNC(wait, woken_wake_function);
2334         int rc;
2335
2336         add_wait_queue(sk_sleep(sk), &wait);
2337         sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
2338         rc = sk_wait_event(sk, timeo, skb_peek_tail(&sk->sk_receive_queue) != skb, &wait);
2339         sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
2340         remove_wait_queue(sk_sleep(sk), &wait);
2341         return rc;
2342 }
2343 EXPORT_SYMBOL(sk_wait_data);
2344
2345 /**
2346  *      __sk_mem_raise_allocated - increase memory_allocated
2347  *      @sk: socket
2348  *      @size: memory size to allocate
2349  *      @amt: pages to allocate
2350  *      @kind: allocation type
2351  *
2352  *      Similar to __sk_mem_schedule(), but does not update sk_forward_alloc
2353  */
2354 int __sk_mem_raise_allocated(struct sock *sk, int size, int amt, int kind)
2355 {
2356         struct proto *prot = sk->sk_prot;
2357         long allocated = sk_memory_allocated_add(sk, amt);
2358
2359         if (mem_cgroup_sockets_enabled && sk->sk_memcg &&
2360             !mem_cgroup_charge_skmem(sk->sk_memcg, amt))
2361                 goto suppress_allocation;
2362
2363         /* Under limit. */
2364         if (allocated <= sk_prot_mem_limits(sk, 0)) {
2365                 sk_leave_memory_pressure(sk);
2366                 return 1;
2367         }
2368
2369         /* Under pressure. */
2370         if (allocated > sk_prot_mem_limits(sk, 1))
2371                 sk_enter_memory_pressure(sk);
2372
2373         /* Over hard limit. */
2374         if (allocated > sk_prot_mem_limits(sk, 2))
2375                 goto suppress_allocation;
2376
2377         /* guarantee minimum buffer size under pressure */
2378         if (kind == SK_MEM_RECV) {
2379                 if (atomic_read(&sk->sk_rmem_alloc) < prot->sysctl_rmem[0])
2380                         return 1;
2381
2382         } else { /* SK_MEM_SEND */
2383                 if (sk->sk_type == SOCK_STREAM) {
2384                         if (sk->sk_wmem_queued < prot->sysctl_wmem[0])
2385                                 return 1;
2386                 } else if (refcount_read(&sk->sk_wmem_alloc) <
2387                            prot->sysctl_wmem[0])
2388                                 return 1;
2389         }
2390
2391         if (sk_has_memory_pressure(sk)) {
2392                 u64 alloc;
2393
2394                 if (!sk_under_memory_pressure(sk))
2395                         return 1;
2396                 alloc = sk_sockets_allocated_read_positive(sk);
2397                 if (sk_prot_mem_limits(sk, 2) > alloc *
2398                     sk_mem_pages(sk->sk_wmem_queued +
2399                                  atomic_read(&sk->sk_rmem_alloc) +
2400                                  sk->sk_forward_alloc))
2401                         return 1;
2402         }
2403
2404 suppress_allocation:
2405
2406         if (kind == SK_MEM_SEND && sk->sk_type == SOCK_STREAM) {
2407                 sk_stream_moderate_sndbuf(sk);
2408
2409                 /* Fail only if socket is _under_ its sndbuf.
2410                  * In this case we cannot block, so that we have to fail.
2411                  */
2412                 if (sk->sk_wmem_queued + size >= sk->sk_sndbuf)
2413                         return 1;
2414         }
2415
2416         trace_sock_exceed_buf_limit(sk, prot, allocated);
2417
2418         sk_memory_allocated_sub(sk, amt);
2419
2420         if (mem_cgroup_sockets_enabled && sk->sk_memcg)
2421                 mem_cgroup_uncharge_skmem(sk->sk_memcg, amt);
2422
2423         return 0;
2424 }
2425 EXPORT_SYMBOL(__sk_mem_raise_allocated);
2426
2427 /**
2428  *      __sk_mem_schedule - increase sk_forward_alloc and memory_allocated
2429  *      @sk: socket
2430  *      @size: memory size to allocate
2431  *      @kind: allocation type
2432  *
2433  *      If kind is SK_MEM_SEND, it means wmem allocation. Otherwise it means
2434  *      rmem allocation. This function assumes that protocols which have
2435  *      memory_pressure use sk_wmem_queued as write buffer accounting.
2436  */
2437 int __sk_mem_schedule(struct sock *sk, int size, int kind)
2438 {
2439         int ret, amt = sk_mem_pages(size);
2440
2441         sk->sk_forward_alloc += amt << SK_MEM_QUANTUM_SHIFT;
2442         ret = __sk_mem_raise_allocated(sk, size, amt, kind);
2443         if (!ret)
2444                 sk->sk_forward_alloc -= amt << SK_MEM_QUANTUM_SHIFT;
2445         return ret;
2446 }
2447 EXPORT_SYMBOL(__sk_mem_schedule);
2448
2449 /**
2450  *      __sk_mem_reduce_allocated - reclaim memory_allocated
2451  *      @sk: socket
2452  *      @amount: number of quanta
2453  *
2454  *      Similar to __sk_mem_reclaim(), but does not update sk_forward_alloc
2455  */
2456 void __sk_mem_reduce_allocated(struct sock *sk, int amount)
2457 {
2458         sk_memory_allocated_sub(sk, amount);
2459
2460         if (mem_cgroup_sockets_enabled && sk->sk_memcg)
2461                 mem_cgroup_uncharge_skmem(sk->sk_memcg, amount);
2462
2463         if (sk_under_global_memory_pressure(sk) &&
2464             (sk_memory_allocated(sk) < sk_prot_mem_limits(sk, 0)))
2465                 sk_leave_memory_pressure(sk);
2466 }
2467 EXPORT_SYMBOL(__sk_mem_reduce_allocated);
2468
2469 /**
2470  *      __sk_mem_reclaim - reclaim sk_forward_alloc and memory_allocated
2471  *      @sk: socket
2472  *      @amount: number of bytes (rounded down to a SK_MEM_QUANTUM multiple)
2473  */
2474 void __sk_mem_reclaim(struct sock *sk, int amount)
2475 {
2476         amount >>= SK_MEM_QUANTUM_SHIFT;
2477         sk->sk_forward_alloc -= amount << SK_MEM_QUANTUM_SHIFT;
2478         __sk_mem_reduce_allocated(sk, amount);
2479 }
2480 EXPORT_SYMBOL(__sk_mem_reclaim);
2481
2482 int sk_set_peek_off(struct sock *sk, int val)
2483 {
2484         WRITE_ONCE(sk->sk_peek_off, val);
2485         return 0;
2486 }
2487 EXPORT_SYMBOL_GPL(sk_set_peek_off);
2488
2489 /*
2490  * Set of default routines for initialising struct proto_ops when
2491  * the protocol does not support a particular function. In certain
2492  * cases where it makes no sense for a protocol to have a "do nothing"
2493  * function, some default processing is provided.
2494  */
2495
2496 int sock_no_bind(struct socket *sock, struct sockaddr *saddr, int len)
2497 {
2498         return -EOPNOTSUPP;
2499 }
2500 EXPORT_SYMBOL(sock_no_bind);
2501
2502 int sock_no_connect(struct socket *sock, struct sockaddr *saddr,
2503                     int len, int flags)
2504 {
2505         return -EOPNOTSUPP;
2506 }
2507 EXPORT_SYMBOL(sock_no_connect);
2508
2509 int sock_no_socketpair(struct socket *sock1, struct socket *sock2)
2510 {
2511         return -EOPNOTSUPP;
2512 }
2513 EXPORT_SYMBOL(sock_no_socketpair);
2514
2515 int sock_no_accept(struct socket *sock, struct socket *newsock, int flags,
2516                    bool kern)
2517 {
2518         return -EOPNOTSUPP;
2519 }
2520 EXPORT_SYMBOL(sock_no_accept);
2521
2522 int sock_no_getname(struct socket *sock, struct sockaddr *saddr,
2523                     int *len, int peer)
2524 {
2525         return -EOPNOTSUPP;
2526 }
2527 EXPORT_SYMBOL(sock_no_getname);
2528
2529 unsigned int sock_no_poll(struct file *file, struct socket *sock, poll_table *pt)
2530 {
2531         return 0;
2532 }
2533 EXPORT_SYMBOL(sock_no_poll);
2534
2535 int sock_no_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2536 {
2537         return -EOPNOTSUPP;
2538 }
2539 EXPORT_SYMBOL(sock_no_ioctl);
2540
2541 int sock_no_listen(struct socket *sock, int backlog)
2542 {
2543         return -EOPNOTSUPP;
2544 }
2545 EXPORT_SYMBOL(sock_no_listen);
2546
2547 int sock_no_shutdown(struct socket *sock, int how)
2548 {
2549         return -EOPNOTSUPP;
2550 }
2551 EXPORT_SYMBOL(sock_no_shutdown);
2552
2553 int sock_no_setsockopt(struct socket *sock, int level, int optname,
2554                     char __user *optval, unsigned int optlen)
2555 {
2556         return -EOPNOTSUPP;
2557 }
2558 EXPORT_SYMBOL(sock_no_setsockopt);
2559
2560 int sock_no_getsockopt(struct socket *sock, int level, int optname,
2561                     char __user *optval, int __user *optlen)
2562 {
2563         return -EOPNOTSUPP;
2564 }
2565 EXPORT_SYMBOL(sock_no_getsockopt);
2566
2567 int sock_no_sendmsg(struct socket *sock, struct msghdr *m, size_t len)
2568 {
2569         return -EOPNOTSUPP;
2570 }
2571 EXPORT_SYMBOL(sock_no_sendmsg);
2572
2573 int sock_no_sendmsg_locked(struct sock *sk, struct msghdr *m, size_t len)
2574 {
2575         return -EOPNOTSUPP;
2576 }
2577 EXPORT_SYMBOL(sock_no_sendmsg_locked);
2578
2579 int sock_no_recvmsg(struct socket *sock, struct msghdr *m, size_t len,
2580                     int flags)
2581 {
2582         return -EOPNOTSUPP;
2583 }
2584 EXPORT_SYMBOL(sock_no_recvmsg);
2585
2586 int sock_no_mmap(struct file *file, struct socket *sock, struct vm_area_struct *vma)
2587 {
2588         /* Mirror missing mmap method error code */
2589         return -ENODEV;
2590 }
2591 EXPORT_SYMBOL(sock_no_mmap);
2592
2593 /*
2594  * When a file is received (via SCM_RIGHTS, etc), we must bump the
2595  * various sock-based usage counts.
2596  */
2597 void __receive_sock(struct file *file)
2598 {
2599         struct socket *sock;
2600         int error;
2601
2602         /*
2603          * The resulting value of "error" is ignored here since we only
2604          * need to take action when the file is a socket and testing
2605          * "sock" for NULL is sufficient.
2606          */
2607         sock = sock_from_file(file, &error);
2608         if (sock) {
2609                 sock_update_netprioidx(&sock->sk->sk_cgrp_data);
2610                 sock_update_classid(&sock->sk->sk_cgrp_data);
2611         }
2612 }
2613
2614 ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags)
2615 {
2616         ssize_t res;
2617         struct msghdr msg = {.msg_flags = flags};
2618         struct kvec iov;
2619         char *kaddr = kmap(page);
2620         iov.iov_base = kaddr + offset;
2621         iov.iov_len = size;
2622         res = kernel_sendmsg(sock, &msg, &iov, 1, size);
2623         kunmap(page);
2624         return res;
2625 }
2626 EXPORT_SYMBOL(sock_no_sendpage);
2627
2628 ssize_t sock_no_sendpage_locked(struct sock *sk, struct page *page,
2629                                 int offset, size_t size, int flags)
2630 {
2631         ssize_t res;
2632         struct msghdr msg = {.msg_flags = flags};
2633         struct kvec iov;
2634         char *kaddr = kmap(page);
2635
2636         iov.iov_base = kaddr + offset;
2637         iov.iov_len = size;
2638         res = kernel_sendmsg_locked(sk, &msg, &iov, 1, size);
2639         kunmap(page);
2640         return res;
2641 }
2642 EXPORT_SYMBOL(sock_no_sendpage_locked);
2643
2644 /*
2645  *      Default Socket Callbacks
2646  */
2647
2648 static void sock_def_wakeup(struct sock *sk)
2649 {
2650         struct socket_wq *wq;
2651
2652         rcu_read_lock();
2653         wq = rcu_dereference(sk->sk_wq);
2654         if (skwq_has_sleeper(wq))
2655                 wake_up_interruptible_all(&wq->wait);
2656         rcu_read_unlock();
2657 }
2658
2659 static void sock_def_error_report(struct sock *sk)
2660 {
2661         struct socket_wq *wq;
2662
2663         rcu_read_lock();
2664         wq = rcu_dereference(sk->sk_wq);
2665         if (skwq_has_sleeper(wq))
2666                 wake_up_interruptible_poll(&wq->wait, POLLERR);
2667         sk_wake_async(sk, SOCK_WAKE_IO, POLL_ERR);
2668         rcu_read_unlock();
2669 }
2670
2671 static void sock_def_readable(struct sock *sk)
2672 {
2673         struct socket_wq *wq;
2674
2675         rcu_read_lock();
2676         wq = rcu_dereference(sk->sk_wq);
2677         if (skwq_has_sleeper(wq))
2678                 wake_up_interruptible_sync_poll(&wq->wait, POLLIN | POLLPRI |
2679                                                 POLLRDNORM | POLLRDBAND);
2680         sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
2681         rcu_read_unlock();
2682 }
2683
2684 static void sock_def_write_space(struct sock *sk)
2685 {
2686         struct socket_wq *wq;
2687
2688         rcu_read_lock();
2689
2690         /* Do not wake up a writer until he can make "significant"
2691          * progress.  --DaveM
2692          */
2693         if ((refcount_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) {
2694                 wq = rcu_dereference(sk->sk_wq);
2695                 if (skwq_has_sleeper(wq))
2696                         wake_up_interruptible_sync_poll(&wq->wait, POLLOUT |
2697                                                 POLLWRNORM | POLLWRBAND);
2698
2699                 /* Should agree with poll, otherwise some programs break */
2700                 if (sock_writeable(sk))
2701                         sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT);
2702         }
2703
2704         rcu_read_unlock();
2705 }
2706
2707 static void sock_def_destruct(struct sock *sk)
2708 {
2709 }
2710
2711 void sk_send_sigurg(struct sock *sk)
2712 {
2713         if (sk->sk_socket && sk->sk_socket->file)
2714                 if (send_sigurg(&sk->sk_socket->file->f_owner))
2715                         sk_wake_async(sk, SOCK_WAKE_URG, POLL_PRI);
2716 }
2717 EXPORT_SYMBOL(sk_send_sigurg);
2718
2719 void sk_reset_timer(struct sock *sk, struct timer_list* timer,
2720                     unsigned long expires)
2721 {
2722         if (!mod_timer(timer, expires))
2723                 sock_hold(sk);
2724 }
2725 EXPORT_SYMBOL(sk_reset_timer);
2726
2727 void sk_stop_timer(struct sock *sk, struct timer_list* timer)
2728 {
2729         if (del_timer(timer))
2730                 __sock_put(sk);
2731 }
2732 EXPORT_SYMBOL(sk_stop_timer);
2733
2734 void sock_init_data(struct socket *sock, struct sock *sk)
2735 {
2736         sk_init_common(sk);
2737         sk->sk_send_head        =       NULL;
2738
2739         init_timer(&sk->sk_timer);
2740
2741         sk->sk_allocation       =       GFP_KERNEL;
2742         sk->sk_rcvbuf           =       sysctl_rmem_default;
2743         sk->sk_sndbuf           =       sysctl_wmem_default;
2744         sk->sk_state            =       TCP_CLOSE;
2745         sk_set_socket(sk, sock);
2746
2747         sock_set_flag(sk, SOCK_ZAPPED);
2748
2749         if (sock) {
2750                 sk->sk_type     =       sock->type;
2751                 sk->sk_wq       =       sock->wq;
2752                 sock->sk        =       sk;
2753                 sk->sk_uid      =       SOCK_INODE(sock)->i_uid;
2754         } else {
2755                 sk->sk_wq       =       NULL;
2756                 sk->sk_uid      =       make_kuid(sock_net(sk)->user_ns, 0);
2757         }
2758
2759         rwlock_init(&sk->sk_callback_lock);
2760         if (sk->sk_kern_sock)
2761                 lockdep_set_class_and_name(
2762                         &sk->sk_callback_lock,
2763                         af_kern_callback_keys + sk->sk_family,
2764                         af_family_kern_clock_key_strings[sk->sk_family]);
2765         else
2766                 lockdep_set_class_and_name(
2767                         &sk->sk_callback_lock,
2768                         af_callback_keys + sk->sk_family,
2769                         af_family_clock_key_strings[sk->sk_family]);
2770
2771         sk->sk_state_change     =       sock_def_wakeup;
2772         sk->sk_data_ready       =       sock_def_readable;
2773         sk->sk_write_space      =       sock_def_write_space;
2774         sk->sk_error_report     =       sock_def_error_report;
2775         sk->sk_destruct         =       sock_def_destruct;
2776
2777         sk->sk_frag.page        =       NULL;
2778         sk->sk_frag.offset      =       0;
2779         sk->sk_peek_off         =       -1;
2780
2781         sk->sk_peer_pid         =       NULL;
2782         sk->sk_peer_cred        =       NULL;
2783         spin_lock_init(&sk->sk_peer_lock);
2784
2785         sk->sk_write_pending    =       0;
2786         sk->sk_rcvlowat         =       1;
2787         sk->sk_rcvtimeo         =       MAX_SCHEDULE_TIMEOUT;
2788         sk->sk_sndtimeo         =       MAX_SCHEDULE_TIMEOUT;
2789
2790         sk->sk_stamp = SK_DEFAULT_STAMP;
2791 #if BITS_PER_LONG==32
2792         seqlock_init(&sk->sk_stamp_seq);
2793 #endif
2794         atomic_set(&sk->sk_zckey, 0);
2795
2796 #ifdef CONFIG_NET_RX_BUSY_POLL
2797         sk->sk_napi_id          =       0;
2798         sk->sk_ll_usec          =       READ_ONCE(sysctl_net_busy_read);
2799 #endif
2800
2801         sk->sk_max_pacing_rate = ~0U;
2802         sk->sk_pacing_rate = ~0U;
2803         sk->sk_incoming_cpu = -1;
2804         /*
2805          * Before updating sk_refcnt, we must commit prior changes to memory
2806          * (Documentation/RCU/rculist_nulls.txt for details)
2807          */
2808         smp_wmb();
2809         refcount_set(&sk->sk_refcnt, 1);
2810         atomic_set(&sk->sk_drops, 0);
2811 }
2812 EXPORT_SYMBOL(sock_init_data);
2813
2814 void lock_sock_nested(struct sock *sk, int subclass)
2815 {
2816         might_sleep();
2817         spin_lock_bh(&sk->sk_lock.slock);
2818         if (sk->sk_lock.owned)
2819                 __lock_sock(sk);
2820         sk->sk_lock.owned = 1;
2821         spin_unlock(&sk->sk_lock.slock);
2822         /*
2823          * The sk_lock has mutex_lock() semantics here:
2824          */
2825         mutex_acquire(&sk->sk_lock.dep_map, subclass, 0, _RET_IP_);
2826         local_bh_enable();
2827 }
2828 EXPORT_SYMBOL(lock_sock_nested);
2829
2830 void release_sock(struct sock *sk)
2831 {
2832         spin_lock_bh(&sk->sk_lock.slock);
2833         if (sk->sk_backlog.tail)
2834                 __release_sock(sk);
2835
2836         /* Warning : release_cb() might need to release sk ownership,
2837          * ie call sock_release_ownership(sk) before us.
2838          */
2839         if (sk->sk_prot->release_cb)
2840                 sk->sk_prot->release_cb(sk);
2841
2842         sock_release_ownership(sk);
2843         if (waitqueue_active(&sk->sk_lock.wq))
2844                 wake_up(&sk->sk_lock.wq);
2845         spin_unlock_bh(&sk->sk_lock.slock);
2846 }
2847 EXPORT_SYMBOL(release_sock);
2848
2849 /**
2850  * lock_sock_fast - fast version of lock_sock
2851  * @sk: socket
2852  *
2853  * This version should be used for very small section, where process wont block
2854  * return false if fast path is taken:
2855  *
2856  *   sk_lock.slock locked, owned = 0, BH disabled
2857  *
2858  * return true if slow path is taken:
2859  *
2860  *   sk_lock.slock unlocked, owned = 1, BH enabled
2861  */
2862 bool lock_sock_fast(struct sock *sk)
2863 {
2864         might_sleep();
2865         spin_lock_bh(&sk->sk_lock.slock);
2866
2867         if (!sk->sk_lock.owned)
2868                 /*
2869                  * Note : We must disable BH
2870                  */
2871                 return false;
2872
2873         __lock_sock(sk);
2874         sk->sk_lock.owned = 1;
2875         spin_unlock(&sk->sk_lock.slock);
2876         /*
2877          * The sk_lock has mutex_lock() semantics here:
2878          */
2879         mutex_acquire(&sk->sk_lock.dep_map, 0, 0, _RET_IP_);
2880         local_bh_enable();
2881         return true;
2882 }
2883 EXPORT_SYMBOL(lock_sock_fast);
2884
2885 int sock_get_timestamp(struct sock *sk, struct timeval __user *userstamp)
2886 {
2887         struct timeval tv;
2888         if (!sock_flag(sk, SOCK_TIMESTAMP))
2889                 sock_enable_timestamp(sk, SOCK_TIMESTAMP);
2890         tv = ktime_to_timeval(sk->sk_stamp);
2891         if (tv.tv_sec == -1)
2892                 return -ENOENT;
2893         if (tv.tv_sec == 0) {
2894                 sk->sk_stamp = ktime_get_real();
2895                 tv = ktime_to_timeval(sk->sk_stamp);
2896         }
2897         return copy_to_user(userstamp, &tv, sizeof(tv)) ? -EFAULT : 0;
2898 }
2899 EXPORT_SYMBOL(sock_get_timestamp);
2900
2901 int sock_get_timestampns(struct sock *sk, struct timespec __user *userstamp)
2902 {
2903         struct timespec ts;
2904         if (!sock_flag(sk, SOCK_TIMESTAMP))
2905                 sock_enable_timestamp(sk, SOCK_TIMESTAMP);
2906         ts = ktime_to_timespec(sk->sk_stamp);
2907         if (ts.tv_sec == -1)
2908                 return -ENOENT;
2909         if (ts.tv_sec == 0) {
2910                 sk->sk_stamp = ktime_get_real();
2911                 ts = ktime_to_timespec(sk->sk_stamp);
2912         }
2913         return copy_to_user(userstamp, &ts, sizeof(ts)) ? -EFAULT : 0;
2914 }
2915 EXPORT_SYMBOL(sock_get_timestampns);
2916
2917 void sock_enable_timestamp(struct sock *sk, int flag)
2918 {
2919         if (!sock_flag(sk, flag)) {
2920                 unsigned long previous_flags = sk->sk_flags;
2921
2922                 sock_set_flag(sk, flag);
2923                 /*
2924                  * we just set one of the two flags which require net
2925                  * time stamping, but time stamping might have been on
2926                  * already because of the other one
2927                  */
2928                 if (sock_needs_netstamp(sk) &&
2929                     !(previous_flags & SK_FLAGS_TIMESTAMP))
2930                         net_enable_timestamp();
2931         }
2932 }
2933
2934 int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
2935                        int level, int type)
2936 {
2937         struct sock_exterr_skb *serr;
2938         struct sk_buff *skb;
2939         int copied, err;
2940
2941         err = -EAGAIN;
2942         skb = sock_dequeue_err_skb(sk);
2943         if (skb == NULL)
2944                 goto out;
2945
2946         copied = skb->len;
2947         if (copied > len) {
2948                 msg->msg_flags |= MSG_TRUNC;
2949                 copied = len;
2950         }
2951         err = skb_copy_datagram_msg(skb, 0, msg, copied);
2952         if (err)
2953                 goto out_free_skb;
2954
2955         sock_recv_timestamp(msg, sk, skb);
2956
2957         serr = SKB_EXT_ERR(skb);
2958         put_cmsg(msg, level, type, sizeof(serr->ee), &serr->ee);
2959
2960         msg->msg_flags |= MSG_ERRQUEUE;
2961         err = copied;
2962
2963 out_free_skb:
2964         kfree_skb(skb);
2965 out:
2966         return err;
2967 }
2968 EXPORT_SYMBOL(sock_recv_errqueue);
2969
2970 /*
2971  *      Get a socket option on an socket.
2972  *
2973  *      FIX: POSIX 1003.1g is very ambiguous here. It states that
2974  *      asynchronous errors should be reported by getsockopt. We assume
2975  *      this means if you specify SO_ERROR (otherwise whats the point of it).
2976  */
2977 int sock_common_getsockopt(struct socket *sock, int level, int optname,
2978                            char __user *optval, int __user *optlen)
2979 {
2980         struct sock *sk = sock->sk;
2981
2982         return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
2983 }
2984 EXPORT_SYMBOL(sock_common_getsockopt);
2985
2986 #ifdef CONFIG_COMPAT
2987 int compat_sock_common_getsockopt(struct socket *sock, int level, int optname,
2988                                   char __user *optval, int __user *optlen)
2989 {
2990         struct sock *sk = sock->sk;
2991
2992         if (sk->sk_prot->compat_getsockopt != NULL)
2993                 return sk->sk_prot->compat_getsockopt(sk, level, optname,
2994                                                       optval, optlen);
2995         return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
2996 }
2997 EXPORT_SYMBOL(compat_sock_common_getsockopt);
2998 #endif
2999
3000 int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
3001                         int flags)
3002 {
3003         struct sock *sk = sock->sk;
3004         int addr_len = 0;
3005         int err;
3006
3007         err = sk->sk_prot->recvmsg(sk, msg, size, flags & MSG_DONTWAIT,
3008                                    flags & ~MSG_DONTWAIT, &addr_len);
3009         if (err >= 0)
3010                 msg->msg_namelen = addr_len;
3011         return err;
3012 }
3013 EXPORT_SYMBOL(sock_common_recvmsg);
3014
3015 /*
3016  *      Set socket options on an inet socket.
3017  */
3018 int sock_common_setsockopt(struct socket *sock, int level, int optname,
3019                            char __user *optval, unsigned int optlen)
3020 {
3021         struct sock *sk = sock->sk;
3022
3023         return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
3024 }
3025 EXPORT_SYMBOL(sock_common_setsockopt);
3026
3027 #ifdef CONFIG_COMPAT
3028 int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
3029                                   char __user *optval, unsigned int optlen)
3030 {
3031         struct sock *sk = sock->sk;
3032
3033         if (sk->sk_prot->compat_setsockopt != NULL)
3034                 return sk->sk_prot->compat_setsockopt(sk, level, optname,
3035                                                       optval, optlen);
3036         return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
3037 }
3038 EXPORT_SYMBOL(compat_sock_common_setsockopt);
3039 #endif
3040
3041 void sk_common_release(struct sock *sk)
3042 {
3043         if (sk->sk_prot->destroy)
3044                 sk->sk_prot->destroy(sk);
3045
3046         /*
3047          * Observation: when sock_common_release is called, processes have
3048          * no access to socket. But net still has.
3049          * Step one, detach it from networking:
3050          *
3051          * A. Remove from hash tables.
3052          */
3053
3054         sk->sk_prot->unhash(sk);
3055
3056         /*
3057          * In this point socket cannot receive new packets, but it is possible
3058          * that some packets are in flight because some CPU runs receiver and
3059          * did hash table lookup before we unhashed socket. They will achieve
3060          * receive queue and will be purged by socket destructor.
3061          *
3062          * Also we still have packets pending on receive queue and probably,
3063          * our own packets waiting in device queues. sock_destroy will drain
3064          * receive queue, but transmitted packets will delay socket destruction
3065          * until the last reference will be released.
3066          */
3067
3068         sock_orphan(sk);
3069
3070         xfrm_sk_free_policy(sk);
3071
3072         sk_refcnt_debug_release(sk);
3073
3074         sock_put(sk);
3075 }
3076 EXPORT_SYMBOL(sk_common_release);
3077
3078 void sk_get_meminfo(const struct sock *sk, u32 *mem)
3079 {
3080         memset(mem, 0, sizeof(*mem) * SK_MEMINFO_VARS);
3081
3082         mem[SK_MEMINFO_RMEM_ALLOC] = sk_rmem_alloc_get(sk);
3083         mem[SK_MEMINFO_RCVBUF] = sk->sk_rcvbuf;
3084         mem[SK_MEMINFO_WMEM_ALLOC] = sk_wmem_alloc_get(sk);
3085         mem[SK_MEMINFO_SNDBUF] = sk->sk_sndbuf;
3086         mem[SK_MEMINFO_FWD_ALLOC] = sk->sk_forward_alloc;
3087         mem[SK_MEMINFO_WMEM_QUEUED] = sk->sk_wmem_queued;
3088         mem[SK_MEMINFO_OPTMEM] = atomic_read(&sk->sk_omem_alloc);
3089         mem[SK_MEMINFO_BACKLOG] = sk->sk_backlog.len;
3090         mem[SK_MEMINFO_DROPS] = atomic_read(&sk->sk_drops);
3091 }
3092
3093 #ifdef CONFIG_PROC_FS
3094 #define PROTO_INUSE_NR  64      /* should be enough for the first time */
3095 struct prot_inuse {
3096         int val[PROTO_INUSE_NR];
3097 };
3098
3099 static DECLARE_BITMAP(proto_inuse_idx, PROTO_INUSE_NR);
3100
3101 #ifdef CONFIG_NET_NS
3102 void sock_prot_inuse_add(struct net *net, struct proto *prot, int val)
3103 {
3104         __this_cpu_add(net->core.inuse->val[prot->inuse_idx], val);
3105 }
3106 EXPORT_SYMBOL_GPL(sock_prot_inuse_add);
3107
3108 int sock_prot_inuse_get(struct net *net, struct proto *prot)
3109 {
3110         int cpu, idx = prot->inuse_idx;
3111         int res = 0;
3112
3113         for_each_possible_cpu(cpu)
3114                 res += per_cpu_ptr(net->core.inuse, cpu)->val[idx];
3115
3116         return res >= 0 ? res : 0;
3117 }
3118 EXPORT_SYMBOL_GPL(sock_prot_inuse_get);
3119
3120 static int __net_init sock_inuse_init_net(struct net *net)
3121 {
3122         net->core.inuse = alloc_percpu(struct prot_inuse);
3123         return net->core.inuse ? 0 : -ENOMEM;
3124 }
3125
3126 static void __net_exit sock_inuse_exit_net(struct net *net)
3127 {
3128         free_percpu(net->core.inuse);
3129 }
3130
3131 static struct pernet_operations net_inuse_ops = {
3132         .init = sock_inuse_init_net,
3133         .exit = sock_inuse_exit_net,
3134 };
3135
3136 static __init int net_inuse_init(void)
3137 {
3138         if (register_pernet_subsys(&net_inuse_ops))
3139                 panic("Cannot initialize net inuse counters");
3140
3141         return 0;
3142 }
3143
3144 core_initcall(net_inuse_init);
3145 #else
3146 static DEFINE_PER_CPU(struct prot_inuse, prot_inuse);
3147
3148 void sock_prot_inuse_add(struct net *net, struct proto *prot, int val)
3149 {
3150         __this_cpu_add(prot_inuse.val[prot->inuse_idx], val);
3151 }
3152 EXPORT_SYMBOL_GPL(sock_prot_inuse_add);
3153
3154 int sock_prot_inuse_get(struct net *net, struct proto *prot)
3155 {
3156         int cpu, idx = prot->inuse_idx;
3157         int res = 0;
3158
3159         for_each_possible_cpu(cpu)
3160                 res += per_cpu(prot_inuse, cpu).val[idx];
3161
3162         return res >= 0 ? res : 0;
3163 }
3164 EXPORT_SYMBOL_GPL(sock_prot_inuse_get);
3165 #endif
3166
3167 static void assign_proto_idx(struct proto *prot)
3168 {
3169         prot->inuse_idx = find_first_zero_bit(proto_inuse_idx, PROTO_INUSE_NR);
3170
3171         if (unlikely(prot->inuse_idx == PROTO_INUSE_NR - 1)) {
3172                 pr_err("PROTO_INUSE_NR exhausted\n");
3173                 return;
3174         }
3175
3176         set_bit(prot->inuse_idx, proto_inuse_idx);
3177 }
3178
3179 static void release_proto_idx(struct proto *prot)
3180 {
3181         if (prot->inuse_idx != PROTO_INUSE_NR - 1)
3182                 clear_bit(prot->inuse_idx, proto_inuse_idx);
3183 }
3184 #else
3185 static inline void assign_proto_idx(struct proto *prot)
3186 {
3187 }
3188
3189 static inline void release_proto_idx(struct proto *prot)
3190 {
3191 }
3192 #endif
3193
3194 static void req_prot_cleanup(struct request_sock_ops *rsk_prot)
3195 {
3196         if (!rsk_prot)
3197                 return;
3198         kfree(rsk_prot->slab_name);
3199         rsk_prot->slab_name = NULL;
3200         kmem_cache_destroy(rsk_prot->slab);
3201         rsk_prot->slab = NULL;
3202 }
3203
3204 static int req_prot_init(const struct proto *prot)
3205 {
3206         struct request_sock_ops *rsk_prot = prot->rsk_prot;
3207
3208         if (!rsk_prot)
3209                 return 0;
3210
3211         rsk_prot->slab_name = kasprintf(GFP_KERNEL, "request_sock_%s",
3212                                         prot->name);
3213         if (!rsk_prot->slab_name)
3214                 return -ENOMEM;
3215
3216         rsk_prot->slab = kmem_cache_create(rsk_prot->slab_name,
3217                                            rsk_prot->obj_size, 0,
3218                                            prot->slab_flags, NULL);
3219
3220         if (!rsk_prot->slab) {
3221                 pr_crit("%s: Can't create request sock SLAB cache!\n",
3222                         prot->name);
3223                 return -ENOMEM;
3224         }
3225         return 0;
3226 }
3227
3228 int proto_register(struct proto *prot, int alloc_slab)
3229 {
3230         if (alloc_slab) {
3231                 prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0,
3232                                         SLAB_HWCACHE_ALIGN | prot->slab_flags,
3233                                         NULL);
3234
3235                 if (prot->slab == NULL) {
3236                         pr_crit("%s: Can't create sock SLAB cache!\n",
3237                                 prot->name);
3238                         goto out;
3239                 }
3240
3241                 if (req_prot_init(prot))
3242                         goto out_free_request_sock_slab;
3243
3244                 if (prot->twsk_prot != NULL) {
3245                         prot->twsk_prot->twsk_slab_name = kasprintf(GFP_KERNEL, "tw_sock_%s", prot->name);
3246
3247                         if (prot->twsk_prot->twsk_slab_name == NULL)
3248                                 goto out_free_request_sock_slab;
3249
3250                         prot->twsk_prot->twsk_slab =
3251                                 kmem_cache_create(prot->twsk_prot->twsk_slab_name,
3252                                                   prot->twsk_prot->twsk_obj_size,
3253                                                   0,
3254                                                   prot->slab_flags,
3255                                                   NULL);
3256                         if (prot->twsk_prot->twsk_slab == NULL)
3257                                 goto out_free_timewait_sock_slab_name;
3258                 }
3259         }
3260
3261         mutex_lock(&proto_list_mutex);
3262         list_add(&prot->node, &proto_list);
3263         assign_proto_idx(prot);
3264         mutex_unlock(&proto_list_mutex);
3265         return 0;
3266
3267 out_free_timewait_sock_slab_name:
3268         kfree(prot->twsk_prot->twsk_slab_name);
3269 out_free_request_sock_slab:
3270         req_prot_cleanup(prot->rsk_prot);
3271
3272         kmem_cache_destroy(prot->slab);
3273         prot->slab = NULL;
3274 out:
3275         return -ENOBUFS;
3276 }
3277 EXPORT_SYMBOL(proto_register);
3278
3279 void proto_unregister(struct proto *prot)
3280 {
3281         mutex_lock(&proto_list_mutex);
3282         release_proto_idx(prot);
3283         list_del(&prot->node);
3284         mutex_unlock(&proto_list_mutex);
3285
3286         kmem_cache_destroy(prot->slab);
3287         prot->slab = NULL;
3288
3289         req_prot_cleanup(prot->rsk_prot);
3290
3291         if (prot->twsk_prot != NULL && prot->twsk_prot->twsk_slab != NULL) {
3292                 kmem_cache_destroy(prot->twsk_prot->twsk_slab);
3293                 kfree(prot->twsk_prot->twsk_slab_name);
3294                 prot->twsk_prot->twsk_slab = NULL;
3295         }
3296 }
3297 EXPORT_SYMBOL(proto_unregister);
3298
3299 #ifdef CONFIG_PROC_FS
3300 static void *proto_seq_start(struct seq_file *seq, loff_t *pos)
3301         __acquires(proto_list_mutex)
3302 {
3303         mutex_lock(&proto_list_mutex);
3304         return seq_list_start_head(&proto_list, *pos);
3305 }
3306
3307 static void *proto_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3308 {
3309         return seq_list_next(v, &proto_list, pos);
3310 }
3311
3312 static void proto_seq_stop(struct seq_file *seq, void *v)
3313         __releases(proto_list_mutex)
3314 {
3315         mutex_unlock(&proto_list_mutex);
3316 }
3317
3318 static char proto_method_implemented(const void *method)
3319 {
3320         return method == NULL ? 'n' : 'y';
3321 }
3322 static long sock_prot_memory_allocated(struct proto *proto)
3323 {
3324         return proto->memory_allocated != NULL ? proto_memory_allocated(proto) : -1L;
3325 }
3326
3327 static char *sock_prot_memory_pressure(struct proto *proto)
3328 {
3329         return proto->memory_pressure != NULL ?
3330         proto_memory_pressure(proto) ? "yes" : "no" : "NI";
3331 }
3332
3333 static void proto_seq_printf(struct seq_file *seq, struct proto *proto)
3334 {
3335
3336         seq_printf(seq, "%-9s %4u %6d  %6ld   %-3s %6u   %-3s  %-10s "
3337                         "%2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c\n",
3338                    proto->name,
3339                    proto->obj_size,
3340                    sock_prot_inuse_get(seq_file_net(seq), proto),
3341                    sock_prot_memory_allocated(proto),
3342                    sock_prot_memory_pressure(proto),
3343                    proto->max_header,
3344                    proto->slab == NULL ? "no" : "yes",
3345                    module_name(proto->owner),
3346                    proto_method_implemented(proto->close),
3347                    proto_method_implemented(proto->connect),
3348                    proto_method_implemented(proto->disconnect),
3349                    proto_method_implemented(proto->accept),
3350                    proto_method_implemented(proto->ioctl),
3351                    proto_method_implemented(proto->init),
3352                    proto_method_implemented(proto->destroy),
3353                    proto_method_implemented(proto->shutdown),
3354                    proto_method_implemented(proto->setsockopt),
3355                    proto_method_implemented(proto->getsockopt),
3356                    proto_method_implemented(proto->sendmsg),
3357                    proto_method_implemented(proto->recvmsg),
3358                    proto_method_implemented(proto->sendpage),
3359                    proto_method_implemented(proto->bind),
3360                    proto_method_implemented(proto->backlog_rcv),
3361                    proto_method_implemented(proto->hash),
3362                    proto_method_implemented(proto->unhash),
3363                    proto_method_implemented(proto->get_port),
3364                    proto_method_implemented(proto->enter_memory_pressure));
3365 }
3366
3367 static int proto_seq_show(struct seq_file *seq, void *v)
3368 {
3369         if (v == &proto_list)
3370                 seq_printf(seq, "%-9s %-4s %-8s %-6s %-5s %-7s %-4s %-10s %s",
3371                            "protocol",
3372                            "size",
3373                            "sockets",
3374                            "memory",
3375                            "press",
3376                            "maxhdr",
3377                            "slab",
3378                            "module",
3379                            "cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n");
3380         else
3381                 proto_seq_printf(seq, list_entry(v, struct proto, node));
3382         return 0;
3383 }
3384
3385 static const struct seq_operations proto_seq_ops = {
3386         .start  = proto_seq_start,
3387         .next   = proto_seq_next,
3388         .stop   = proto_seq_stop,
3389         .show   = proto_seq_show,
3390 };
3391
3392 static int proto_seq_open(struct inode *inode, struct file *file)
3393 {
3394         return seq_open_net(inode, file, &proto_seq_ops,
3395                             sizeof(struct seq_net_private));
3396 }
3397
3398 static const struct file_operations proto_seq_fops = {
3399         .owner          = THIS_MODULE,
3400         .open           = proto_seq_open,
3401         .read           = seq_read,
3402         .llseek         = seq_lseek,
3403         .release        = seq_release_net,
3404 };
3405
3406 static __net_init int proto_init_net(struct net *net)
3407 {
3408         if (!proc_create("protocols", S_IRUGO, net->proc_net, &proto_seq_fops))
3409                 return -ENOMEM;
3410
3411         return 0;
3412 }
3413
3414 static __net_exit void proto_exit_net(struct net *net)
3415 {
3416         remove_proc_entry("protocols", net->proc_net);
3417 }
3418
3419
3420 static __net_initdata struct pernet_operations proto_net_ops = {
3421         .init = proto_init_net,
3422         .exit = proto_exit_net,
3423 };
3424
3425 static int __init proto_init(void)
3426 {
3427         return register_pernet_subsys(&proto_net_ops);
3428 }
3429
3430 subsys_initcall(proto_init);
3431
3432 #endif /* PROC_FS */
3433
3434 #ifdef CONFIG_NET_RX_BUSY_POLL
3435 bool sk_busy_loop_end(void *p, unsigned long start_time)
3436 {
3437         struct sock *sk = p;
3438
3439         return !skb_queue_empty_lockless(&sk->sk_receive_queue) ||
3440                sk_busy_loop_timeout(sk, start_time);
3441 }
3442 EXPORT_SYMBOL(sk_busy_loop_end);
3443 #endif /* CONFIG_NET_RX_BUSY_POLL */