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