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