Merge tag 'sched-core-2024-09-19' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / net / socket.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * NET          An implementation of the SOCKET network access protocol.
4  *
5  * Version:     @(#)socket.c    1.1.93  18/02/95
6  *
7  * Authors:     Orest Zborowski, <obz@Kodak.COM>
8  *              Ross Biro
9  *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
10  *
11  * Fixes:
12  *              Anonymous       :       NOTSOCK/BADF cleanup. Error fix in
13  *                                      shutdown()
14  *              Alan Cox        :       verify_area() fixes
15  *              Alan Cox        :       Removed DDI
16  *              Jonathan Kamens :       SOCK_DGRAM reconnect bug
17  *              Alan Cox        :       Moved a load of checks to the very
18  *                                      top level.
19  *              Alan Cox        :       Move address structures to/from user
20  *                                      mode above the protocol layers.
21  *              Rob Janssen     :       Allow 0 length sends.
22  *              Alan Cox        :       Asynchronous I/O support (cribbed from the
23  *                                      tty drivers).
24  *              Niibe Yutaka    :       Asynchronous I/O for writes (4.4BSD style)
25  *              Jeff Uphoff     :       Made max number of sockets command-line
26  *                                      configurable.
27  *              Matti Aarnio    :       Made the number of sockets dynamic,
28  *                                      to be allocated when needed, and mr.
29  *                                      Uphoff's max is used as max to be
30  *                                      allowed to allocate.
31  *              Linus           :       Argh. removed all the socket allocation
32  *                                      altogether: it's in the inode now.
33  *              Alan Cox        :       Made sock_alloc()/sock_release() public
34  *                                      for NetROM and future kernel nfsd type
35  *                                      stuff.
36  *              Alan Cox        :       sendmsg/recvmsg basics.
37  *              Tom Dyas        :       Export net symbols.
38  *              Marcin Dalecki  :       Fixed problems with CONFIG_NET="n".
39  *              Alan Cox        :       Added thread locking to sys_* calls
40  *                                      for sockets. May have errors at the
41  *                                      moment.
42  *              Kevin Buhr      :       Fixed the dumb errors in the above.
43  *              Andi Kleen      :       Some small cleanups, optimizations,
44  *                                      and fixed a copy_from_user() bug.
45  *              Tigran Aivazian :       sys_send(args) calls sys_sendto(args, NULL, 0)
46  *              Tigran Aivazian :       Made listen(2) backlog sanity checks
47  *                                      protocol-independent
48  *
49  *      This module is effectively the top level interface to the BSD socket
50  *      paradigm.
51  *
52  *      Based upon Swansea University Computer Society NET3.039
53  */
54
55 #include <linux/bpf-cgroup.h>
56 #include <linux/ethtool.h>
57 #include <linux/mm.h>
58 #include <linux/socket.h>
59 #include <linux/file.h>
60 #include <linux/splice.h>
61 #include <linux/net.h>
62 #include <linux/interrupt.h>
63 #include <linux/thread_info.h>
64 #include <linux/rcupdate.h>
65 #include <linux/netdevice.h>
66 #include <linux/proc_fs.h>
67 #include <linux/seq_file.h>
68 #include <linux/mutex.h>
69 #include <linux/if_bridge.h>
70 #include <linux/if_vlan.h>
71 #include <linux/ptp_classify.h>
72 #include <linux/init.h>
73 #include <linux/poll.h>
74 #include <linux/cache.h>
75 #include <linux/module.h>
76 #include <linux/highmem.h>
77 #include <linux/mount.h>
78 #include <linux/pseudo_fs.h>
79 #include <linux/security.h>
80 #include <linux/syscalls.h>
81 #include <linux/compat.h>
82 #include <linux/kmod.h>
83 #include <linux/audit.h>
84 #include <linux/wireless.h>
85 #include <linux/nsproxy.h>
86 #include <linux/magic.h>
87 #include <linux/slab.h>
88 #include <linux/xattr.h>
89 #include <linux/nospec.h>
90 #include <linux/indirect_call_wrapper.h>
91 #include <linux/io_uring/net.h>
92
93 #include <linux/uaccess.h>
94 #include <asm/unistd.h>
95
96 #include <net/compat.h>
97 #include <net/wext.h>
98 #include <net/cls_cgroup.h>
99
100 #include <net/sock.h>
101 #include <linux/netfilter.h>
102
103 #include <linux/if_tun.h>
104 #include <linux/ipv6_route.h>
105 #include <linux/route.h>
106 #include <linux/termios.h>
107 #include <linux/sockios.h>
108 #include <net/busy_poll.h>
109 #include <linux/errqueue.h>
110 #include <linux/ptp_clock_kernel.h>
111 #include <trace/events/sock.h>
112
113 #ifdef CONFIG_NET_RX_BUSY_POLL
114 unsigned int sysctl_net_busy_read __read_mostly;
115 unsigned int sysctl_net_busy_poll __read_mostly;
116 #endif
117
118 static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to);
119 static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from);
120 static int sock_mmap(struct file *file, struct vm_area_struct *vma);
121
122 static int sock_close(struct inode *inode, struct file *file);
123 static __poll_t sock_poll(struct file *file,
124                               struct poll_table_struct *wait);
125 static long sock_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
126 #ifdef CONFIG_COMPAT
127 static long compat_sock_ioctl(struct file *file,
128                               unsigned int cmd, unsigned long arg);
129 #endif
130 static int sock_fasync(int fd, struct file *filp, int on);
131 static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
132                                 struct pipe_inode_info *pipe, size_t len,
133                                 unsigned int flags);
134 static void sock_splice_eof(struct file *file);
135
136 #ifdef CONFIG_PROC_FS
137 static void sock_show_fdinfo(struct seq_file *m, struct file *f)
138 {
139         struct socket *sock = f->private_data;
140         const struct proto_ops *ops = READ_ONCE(sock->ops);
141
142         if (ops->show_fdinfo)
143                 ops->show_fdinfo(m, sock);
144 }
145 #else
146 #define sock_show_fdinfo NULL
147 #endif
148
149 /*
150  *      Socket files have a set of 'special' operations as well as the generic file ones. These don't appear
151  *      in the operation structures but are done directly via the socketcall() multiplexor.
152  */
153
154 static const struct file_operations socket_file_ops = {
155         .owner =        THIS_MODULE,
156         .llseek =       no_llseek,
157         .read_iter =    sock_read_iter,
158         .write_iter =   sock_write_iter,
159         .poll =         sock_poll,
160         .unlocked_ioctl = sock_ioctl,
161 #ifdef CONFIG_COMPAT
162         .compat_ioctl = compat_sock_ioctl,
163 #endif
164         .uring_cmd =    io_uring_cmd_sock,
165         .mmap =         sock_mmap,
166         .release =      sock_close,
167         .fasync =       sock_fasync,
168         .splice_write = splice_to_socket,
169         .splice_read =  sock_splice_read,
170         .splice_eof =   sock_splice_eof,
171         .show_fdinfo =  sock_show_fdinfo,
172 };
173
174 static const char * const pf_family_names[] = {
175         [PF_UNSPEC]     = "PF_UNSPEC",
176         [PF_UNIX]       = "PF_UNIX/PF_LOCAL",
177         [PF_INET]       = "PF_INET",
178         [PF_AX25]       = "PF_AX25",
179         [PF_IPX]        = "PF_IPX",
180         [PF_APPLETALK]  = "PF_APPLETALK",
181         [PF_NETROM]     = "PF_NETROM",
182         [PF_BRIDGE]     = "PF_BRIDGE",
183         [PF_ATMPVC]     = "PF_ATMPVC",
184         [PF_X25]        = "PF_X25",
185         [PF_INET6]      = "PF_INET6",
186         [PF_ROSE]       = "PF_ROSE",
187         [PF_DECnet]     = "PF_DECnet",
188         [PF_NETBEUI]    = "PF_NETBEUI",
189         [PF_SECURITY]   = "PF_SECURITY",
190         [PF_KEY]        = "PF_KEY",
191         [PF_NETLINK]    = "PF_NETLINK/PF_ROUTE",
192         [PF_PACKET]     = "PF_PACKET",
193         [PF_ASH]        = "PF_ASH",
194         [PF_ECONET]     = "PF_ECONET",
195         [PF_ATMSVC]     = "PF_ATMSVC",
196         [PF_RDS]        = "PF_RDS",
197         [PF_SNA]        = "PF_SNA",
198         [PF_IRDA]       = "PF_IRDA",
199         [PF_PPPOX]      = "PF_PPPOX",
200         [PF_WANPIPE]    = "PF_WANPIPE",
201         [PF_LLC]        = "PF_LLC",
202         [PF_IB]         = "PF_IB",
203         [PF_MPLS]       = "PF_MPLS",
204         [PF_CAN]        = "PF_CAN",
205         [PF_TIPC]       = "PF_TIPC",
206         [PF_BLUETOOTH]  = "PF_BLUETOOTH",
207         [PF_IUCV]       = "PF_IUCV",
208         [PF_RXRPC]      = "PF_RXRPC",
209         [PF_ISDN]       = "PF_ISDN",
210         [PF_PHONET]     = "PF_PHONET",
211         [PF_IEEE802154] = "PF_IEEE802154",
212         [PF_CAIF]       = "PF_CAIF",
213         [PF_ALG]        = "PF_ALG",
214         [PF_NFC]        = "PF_NFC",
215         [PF_VSOCK]      = "PF_VSOCK",
216         [PF_KCM]        = "PF_KCM",
217         [PF_QIPCRTR]    = "PF_QIPCRTR",
218         [PF_SMC]        = "PF_SMC",
219         [PF_XDP]        = "PF_XDP",
220         [PF_MCTP]       = "PF_MCTP",
221 };
222
223 /*
224  *      The protocol list. Each protocol is registered in here.
225  */
226
227 static DEFINE_SPINLOCK(net_family_lock);
228 static const struct net_proto_family __rcu *net_families[NPROTO] __read_mostly;
229
230 /*
231  * Support routines.
232  * Move socket addresses back and forth across the kernel/user
233  * divide and look after the messy bits.
234  */
235
236 /**
237  *      move_addr_to_kernel     -       copy a socket address into kernel space
238  *      @uaddr: Address in user space
239  *      @kaddr: Address in kernel space
240  *      @ulen: Length in user space
241  *
242  *      The address is copied into kernel space. If the provided address is
243  *      too long an error code of -EINVAL is returned. If the copy gives
244  *      invalid addresses -EFAULT is returned. On a success 0 is returned.
245  */
246
247 int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr_storage *kaddr)
248 {
249         if (ulen < 0 || ulen > sizeof(struct sockaddr_storage))
250                 return -EINVAL;
251         if (ulen == 0)
252                 return 0;
253         if (copy_from_user(kaddr, uaddr, ulen))
254                 return -EFAULT;
255         return audit_sockaddr(ulen, kaddr);
256 }
257
258 /**
259  *      move_addr_to_user       -       copy an address to user space
260  *      @kaddr: kernel space address
261  *      @klen: length of address in kernel
262  *      @uaddr: user space address
263  *      @ulen: pointer to user length field
264  *
265  *      The value pointed to by ulen on entry is the buffer length available.
266  *      This is overwritten with the buffer space used. -EINVAL is returned
267  *      if an overlong buffer is specified or a negative buffer size. -EFAULT
268  *      is returned if either the buffer or the length field are not
269  *      accessible.
270  *      After copying the data up to the limit the user specifies, the true
271  *      length of the data is written over the length limit the user
272  *      specified. Zero is returned for a success.
273  */
274
275 static int move_addr_to_user(struct sockaddr_storage *kaddr, int klen,
276                              void __user *uaddr, int __user *ulen)
277 {
278         int err;
279         int len;
280
281         BUG_ON(klen > sizeof(struct sockaddr_storage));
282         err = get_user(len, ulen);
283         if (err)
284                 return err;
285         if (len > klen)
286                 len = klen;
287         if (len < 0)
288                 return -EINVAL;
289         if (len) {
290                 if (audit_sockaddr(klen, kaddr))
291                         return -ENOMEM;
292                 if (copy_to_user(uaddr, kaddr, len))
293                         return -EFAULT;
294         }
295         /*
296          *      "fromlen shall refer to the value before truncation.."
297          *                      1003.1g
298          */
299         return __put_user(klen, ulen);
300 }
301
302 static struct kmem_cache *sock_inode_cachep __ro_after_init;
303
304 static struct inode *sock_alloc_inode(struct super_block *sb)
305 {
306         struct socket_alloc *ei;
307
308         ei = alloc_inode_sb(sb, sock_inode_cachep, GFP_KERNEL);
309         if (!ei)
310                 return NULL;
311         init_waitqueue_head(&ei->socket.wq.wait);
312         ei->socket.wq.fasync_list = NULL;
313         ei->socket.wq.flags = 0;
314
315         ei->socket.state = SS_UNCONNECTED;
316         ei->socket.flags = 0;
317         ei->socket.ops = NULL;
318         ei->socket.sk = NULL;
319         ei->socket.file = NULL;
320
321         return &ei->vfs_inode;
322 }
323
324 static void sock_free_inode(struct inode *inode)
325 {
326         struct socket_alloc *ei;
327
328         ei = container_of(inode, struct socket_alloc, vfs_inode);
329         kmem_cache_free(sock_inode_cachep, ei);
330 }
331
332 static void init_once(void *foo)
333 {
334         struct socket_alloc *ei = (struct socket_alloc *)foo;
335
336         inode_init_once(&ei->vfs_inode);
337 }
338
339 static void init_inodecache(void)
340 {
341         sock_inode_cachep = kmem_cache_create("sock_inode_cache",
342                                               sizeof(struct socket_alloc),
343                                               0,
344                                               (SLAB_HWCACHE_ALIGN |
345                                                SLAB_RECLAIM_ACCOUNT |
346                                                SLAB_ACCOUNT),
347                                               init_once);
348         BUG_ON(sock_inode_cachep == NULL);
349 }
350
351 static const struct super_operations sockfs_ops = {
352         .alloc_inode    = sock_alloc_inode,
353         .free_inode     = sock_free_inode,
354         .statfs         = simple_statfs,
355 };
356
357 /*
358  * sockfs_dname() is called from d_path().
359  */
360 static char *sockfs_dname(struct dentry *dentry, char *buffer, int buflen)
361 {
362         return dynamic_dname(buffer, buflen, "socket:[%lu]",
363                                 d_inode(dentry)->i_ino);
364 }
365
366 static const struct dentry_operations sockfs_dentry_operations = {
367         .d_dname  = sockfs_dname,
368 };
369
370 static int sockfs_xattr_get(const struct xattr_handler *handler,
371                             struct dentry *dentry, struct inode *inode,
372                             const char *suffix, void *value, size_t size)
373 {
374         if (value) {
375                 if (dentry->d_name.len + 1 > size)
376                         return -ERANGE;
377                 memcpy(value, dentry->d_name.name, dentry->d_name.len + 1);
378         }
379         return dentry->d_name.len + 1;
380 }
381
382 #define XATTR_SOCKPROTONAME_SUFFIX "sockprotoname"
383 #define XATTR_NAME_SOCKPROTONAME (XATTR_SYSTEM_PREFIX XATTR_SOCKPROTONAME_SUFFIX)
384 #define XATTR_NAME_SOCKPROTONAME_LEN (sizeof(XATTR_NAME_SOCKPROTONAME)-1)
385
386 static const struct xattr_handler sockfs_xattr_handler = {
387         .name = XATTR_NAME_SOCKPROTONAME,
388         .get = sockfs_xattr_get,
389 };
390
391 static int sockfs_security_xattr_set(const struct xattr_handler *handler,
392                                      struct mnt_idmap *idmap,
393                                      struct dentry *dentry, struct inode *inode,
394                                      const char *suffix, const void *value,
395                                      size_t size, int flags)
396 {
397         /* Handled by LSM. */
398         return -EAGAIN;
399 }
400
401 static const struct xattr_handler sockfs_security_xattr_handler = {
402         .prefix = XATTR_SECURITY_PREFIX,
403         .set = sockfs_security_xattr_set,
404 };
405
406 static const struct xattr_handler * const sockfs_xattr_handlers[] = {
407         &sockfs_xattr_handler,
408         &sockfs_security_xattr_handler,
409         NULL
410 };
411
412 static int sockfs_init_fs_context(struct fs_context *fc)
413 {
414         struct pseudo_fs_context *ctx = init_pseudo(fc, SOCKFS_MAGIC);
415         if (!ctx)
416                 return -ENOMEM;
417         ctx->ops = &sockfs_ops;
418         ctx->dops = &sockfs_dentry_operations;
419         ctx->xattr = sockfs_xattr_handlers;
420         return 0;
421 }
422
423 static struct vfsmount *sock_mnt __read_mostly;
424
425 static struct file_system_type sock_fs_type = {
426         .name =         "sockfs",
427         .init_fs_context = sockfs_init_fs_context,
428         .kill_sb =      kill_anon_super,
429 };
430
431 /*
432  *      Obtains the first available file descriptor and sets it up for use.
433  *
434  *      These functions create file structures and maps them to fd space
435  *      of the current process. On success it returns file descriptor
436  *      and file struct implicitly stored in sock->file.
437  *      Note that another thread may close file descriptor before we return
438  *      from this function. We use the fact that now we do not refer
439  *      to socket after mapping. If one day we will need it, this
440  *      function will increment ref. count on file by 1.
441  *
442  *      In any case returned fd MAY BE not valid!
443  *      This race condition is unavoidable
444  *      with shared fd spaces, we cannot solve it inside kernel,
445  *      but we take care of internal coherence yet.
446  */
447
448 /**
449  *      sock_alloc_file - Bind a &socket to a &file
450  *      @sock: socket
451  *      @flags: file status flags
452  *      @dname: protocol name
453  *
454  *      Returns the &file bound with @sock, implicitly storing it
455  *      in sock->file. If dname is %NULL, sets to "".
456  *
457  *      On failure @sock is released, and an ERR pointer is returned.
458  *
459  *      This function uses GFP_KERNEL internally.
460  */
461
462 struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)
463 {
464         struct file *file;
465
466         if (!dname)
467                 dname = sock->sk ? sock->sk->sk_prot_creator->name : "";
468
469         file = alloc_file_pseudo(SOCK_INODE(sock), sock_mnt, dname,
470                                 O_RDWR | (flags & O_NONBLOCK),
471                                 &socket_file_ops);
472         if (IS_ERR(file)) {
473                 sock_release(sock);
474                 return file;
475         }
476
477         file->f_mode |= FMODE_NOWAIT;
478         sock->file = file;
479         file->private_data = sock;
480         stream_open(SOCK_INODE(sock), file);
481         return file;
482 }
483 EXPORT_SYMBOL(sock_alloc_file);
484
485 static int sock_map_fd(struct socket *sock, int flags)
486 {
487         struct file *newfile;
488         int fd = get_unused_fd_flags(flags);
489         if (unlikely(fd < 0)) {
490                 sock_release(sock);
491                 return fd;
492         }
493
494         newfile = sock_alloc_file(sock, flags, NULL);
495         if (!IS_ERR(newfile)) {
496                 fd_install(fd, newfile);
497                 return fd;
498         }
499
500         put_unused_fd(fd);
501         return PTR_ERR(newfile);
502 }
503
504 /**
505  *      sock_from_file - Return the &socket bounded to @file.
506  *      @file: file
507  *
508  *      On failure returns %NULL.
509  */
510
511 struct socket *sock_from_file(struct file *file)
512 {
513         if (file->f_op == &socket_file_ops)
514                 return file->private_data;      /* set in sock_alloc_file */
515
516         return NULL;
517 }
518 EXPORT_SYMBOL(sock_from_file);
519
520 /**
521  *      sockfd_lookup - Go from a file number to its socket slot
522  *      @fd: file handle
523  *      @err: pointer to an error code return
524  *
525  *      The file handle passed in is locked and the socket it is bound
526  *      to is returned. If an error occurs the err pointer is overwritten
527  *      with a negative errno code and NULL is returned. The function checks
528  *      for both invalid handles and passing a handle which is not a socket.
529  *
530  *      On a success the socket object pointer is returned.
531  */
532
533 struct socket *sockfd_lookup(int fd, int *err)
534 {
535         struct file *file;
536         struct socket *sock;
537
538         file = fget(fd);
539         if (!file) {
540                 *err = -EBADF;
541                 return NULL;
542         }
543
544         sock = sock_from_file(file);
545         if (!sock) {
546                 *err = -ENOTSOCK;
547                 fput(file);
548         }
549         return sock;
550 }
551 EXPORT_SYMBOL(sockfd_lookup);
552
553 static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)
554 {
555         struct fd f = fdget(fd);
556         struct socket *sock;
557
558         *err = -EBADF;
559         if (f.file) {
560                 sock = sock_from_file(f.file);
561                 if (likely(sock)) {
562                         *fput_needed = f.flags & FDPUT_FPUT;
563                         return sock;
564                 }
565                 *err = -ENOTSOCK;
566                 fdput(f);
567         }
568         return NULL;
569 }
570
571 static ssize_t sockfs_listxattr(struct dentry *dentry, char *buffer,
572                                 size_t size)
573 {
574         ssize_t len;
575         ssize_t used = 0;
576
577         len = security_inode_listsecurity(d_inode(dentry), buffer, size);
578         if (len < 0)
579                 return len;
580         used += len;
581         if (buffer) {
582                 if (size < used)
583                         return -ERANGE;
584                 buffer += len;
585         }
586
587         len = (XATTR_NAME_SOCKPROTONAME_LEN + 1);
588         used += len;
589         if (buffer) {
590                 if (size < used)
591                         return -ERANGE;
592                 memcpy(buffer, XATTR_NAME_SOCKPROTONAME, len);
593                 buffer += len;
594         }
595
596         return used;
597 }
598
599 static int sockfs_setattr(struct mnt_idmap *idmap,
600                           struct dentry *dentry, struct iattr *iattr)
601 {
602         int err = simple_setattr(&nop_mnt_idmap, dentry, iattr);
603
604         if (!err && (iattr->ia_valid & ATTR_UID)) {
605                 struct socket *sock = SOCKET_I(d_inode(dentry));
606
607                 if (sock->sk)
608                         sock->sk->sk_uid = iattr->ia_uid;
609                 else
610                         err = -ENOENT;
611         }
612
613         return err;
614 }
615
616 static const struct inode_operations sockfs_inode_ops = {
617         .listxattr = sockfs_listxattr,
618         .setattr = sockfs_setattr,
619 };
620
621 /**
622  *      sock_alloc - allocate a socket
623  *
624  *      Allocate a new inode and socket object. The two are bound together
625  *      and initialised. The socket is then returned. If we are out of inodes
626  *      NULL is returned. This functions uses GFP_KERNEL internally.
627  */
628
629 struct socket *sock_alloc(void)
630 {
631         struct inode *inode;
632         struct socket *sock;
633
634         inode = new_inode_pseudo(sock_mnt->mnt_sb);
635         if (!inode)
636                 return NULL;
637
638         sock = SOCKET_I(inode);
639
640         inode->i_ino = get_next_ino();
641         inode->i_mode = S_IFSOCK | S_IRWXUGO;
642         inode->i_uid = current_fsuid();
643         inode->i_gid = current_fsgid();
644         inode->i_op = &sockfs_inode_ops;
645
646         return sock;
647 }
648 EXPORT_SYMBOL(sock_alloc);
649
650 static void __sock_release(struct socket *sock, struct inode *inode)
651 {
652         const struct proto_ops *ops = READ_ONCE(sock->ops);
653
654         if (ops) {
655                 struct module *owner = ops->owner;
656
657                 if (inode)
658                         inode_lock(inode);
659                 ops->release(sock);
660                 sock->sk = NULL;
661                 if (inode)
662                         inode_unlock(inode);
663                 sock->ops = NULL;
664                 module_put(owner);
665         }
666
667         if (sock->wq.fasync_list)
668                 pr_err("%s: fasync list not empty!\n", __func__);
669
670         if (!sock->file) {
671                 iput(SOCK_INODE(sock));
672                 return;
673         }
674         sock->file = NULL;
675 }
676
677 /**
678  *      sock_release - close a socket
679  *      @sock: socket to close
680  *
681  *      The socket is released from the protocol stack if it has a release
682  *      callback, and the inode is then released if the socket is bound to
683  *      an inode not a file.
684  */
685 void sock_release(struct socket *sock)
686 {
687         __sock_release(sock, NULL);
688 }
689 EXPORT_SYMBOL(sock_release);
690
691 void __sock_tx_timestamp(__u16 tsflags, __u8 *tx_flags)
692 {
693         u8 flags = *tx_flags;
694
695         if (tsflags & SOF_TIMESTAMPING_TX_HARDWARE) {
696                 flags |= SKBTX_HW_TSTAMP;
697
698                 /* PTP hardware clocks can provide a free running cycle counter
699                  * as a time base for virtual clocks. Tell driver to use the
700                  * free running cycle counter for timestamp if socket is bound
701                  * to virtual clock.
702                  */
703                 if (tsflags & SOF_TIMESTAMPING_BIND_PHC)
704                         flags |= SKBTX_HW_TSTAMP_USE_CYCLES;
705         }
706
707         if (tsflags & SOF_TIMESTAMPING_TX_SOFTWARE)
708                 flags |= SKBTX_SW_TSTAMP;
709
710         if (tsflags & SOF_TIMESTAMPING_TX_SCHED)
711                 flags |= SKBTX_SCHED_TSTAMP;
712
713         *tx_flags = flags;
714 }
715 EXPORT_SYMBOL(__sock_tx_timestamp);
716
717 INDIRECT_CALLABLE_DECLARE(int inet_sendmsg(struct socket *, struct msghdr *,
718                                            size_t));
719 INDIRECT_CALLABLE_DECLARE(int inet6_sendmsg(struct socket *, struct msghdr *,
720                                             size_t));
721
722 static noinline void call_trace_sock_send_length(struct sock *sk, int ret,
723                                                  int flags)
724 {
725         trace_sock_send_length(sk, ret, 0);
726 }
727
728 static inline int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg)
729 {
730         int ret = INDIRECT_CALL_INET(READ_ONCE(sock->ops)->sendmsg, inet6_sendmsg,
731                                      inet_sendmsg, sock, msg,
732                                      msg_data_left(msg));
733         BUG_ON(ret == -EIOCBQUEUED);
734
735         if (trace_sock_send_length_enabled())
736                 call_trace_sock_send_length(sock->sk, ret, 0);
737         return ret;
738 }
739
740 static int __sock_sendmsg(struct socket *sock, struct msghdr *msg)
741 {
742         int err = security_socket_sendmsg(sock, msg,
743                                           msg_data_left(msg));
744
745         return err ?: sock_sendmsg_nosec(sock, msg);
746 }
747
748 /**
749  *      sock_sendmsg - send a message through @sock
750  *      @sock: socket
751  *      @msg: message to send
752  *
753  *      Sends @msg through @sock, passing through LSM.
754  *      Returns the number of bytes sent, or an error code.
755  */
756 int sock_sendmsg(struct socket *sock, struct msghdr *msg)
757 {
758         struct sockaddr_storage *save_addr = (struct sockaddr_storage *)msg->msg_name;
759         struct sockaddr_storage address;
760         int save_len = msg->msg_namelen;
761         int ret;
762
763         if (msg->msg_name) {
764                 memcpy(&address, msg->msg_name, msg->msg_namelen);
765                 msg->msg_name = &address;
766         }
767
768         ret = __sock_sendmsg(sock, msg);
769         msg->msg_name = save_addr;
770         msg->msg_namelen = save_len;
771
772         return ret;
773 }
774 EXPORT_SYMBOL(sock_sendmsg);
775
776 /**
777  *      kernel_sendmsg - send a message through @sock (kernel-space)
778  *      @sock: socket
779  *      @msg: message header
780  *      @vec: kernel vec
781  *      @num: vec array length
782  *      @size: total message data size
783  *
784  *      Builds the message data with @vec and sends it through @sock.
785  *      Returns the number of bytes sent, or an error code.
786  */
787
788 int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
789                    struct kvec *vec, size_t num, size_t size)
790 {
791         iov_iter_kvec(&msg->msg_iter, ITER_SOURCE, vec, num, size);
792         return sock_sendmsg(sock, msg);
793 }
794 EXPORT_SYMBOL(kernel_sendmsg);
795
796 /**
797  *      kernel_sendmsg_locked - send a message through @sock (kernel-space)
798  *      @sk: sock
799  *      @msg: message header
800  *      @vec: output s/g array
801  *      @num: output s/g array length
802  *      @size: total message data size
803  *
804  *      Builds the message data with @vec and sends it through @sock.
805  *      Returns the number of bytes sent, or an error code.
806  *      Caller must hold @sk.
807  */
808
809 int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg,
810                           struct kvec *vec, size_t num, size_t size)
811 {
812         struct socket *sock = sk->sk_socket;
813         const struct proto_ops *ops = READ_ONCE(sock->ops);
814
815         if (!ops->sendmsg_locked)
816                 return sock_no_sendmsg_locked(sk, msg, size);
817
818         iov_iter_kvec(&msg->msg_iter, ITER_SOURCE, vec, num, size);
819
820         return ops->sendmsg_locked(sk, msg, msg_data_left(msg));
821 }
822 EXPORT_SYMBOL(kernel_sendmsg_locked);
823
824 static bool skb_is_err_queue(const struct sk_buff *skb)
825 {
826         /* pkt_type of skbs enqueued on the error queue are set to
827          * PACKET_OUTGOING in skb_set_err_queue(). This is only safe to do
828          * in recvmsg, since skbs received on a local socket will never
829          * have a pkt_type of PACKET_OUTGOING.
830          */
831         return skb->pkt_type == PACKET_OUTGOING;
832 }
833
834 /* On transmit, software and hardware timestamps are returned independently.
835  * As the two skb clones share the hardware timestamp, which may be updated
836  * before the software timestamp is received, a hardware TX timestamp may be
837  * returned only if there is no software TX timestamp. Ignore false software
838  * timestamps, which may be made in the __sock_recv_timestamp() call when the
839  * option SO_TIMESTAMP_OLD(NS) is enabled on the socket, even when the skb has a
840  * hardware timestamp.
841  */
842 static bool skb_is_swtx_tstamp(const struct sk_buff *skb, int false_tstamp)
843 {
844         return skb->tstamp && !false_tstamp && skb_is_err_queue(skb);
845 }
846
847 static ktime_t get_timestamp(struct sock *sk, struct sk_buff *skb, int *if_index)
848 {
849         bool cycles = READ_ONCE(sk->sk_tsflags) & SOF_TIMESTAMPING_BIND_PHC;
850         struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb);
851         struct net_device *orig_dev;
852         ktime_t hwtstamp;
853
854         rcu_read_lock();
855         orig_dev = dev_get_by_napi_id(skb_napi_id(skb));
856         if (orig_dev) {
857                 *if_index = orig_dev->ifindex;
858                 hwtstamp = netdev_get_tstamp(orig_dev, shhwtstamps, cycles);
859         } else {
860                 hwtstamp = shhwtstamps->hwtstamp;
861         }
862         rcu_read_unlock();
863
864         return hwtstamp;
865 }
866
867 static void put_ts_pktinfo(struct msghdr *msg, struct sk_buff *skb,
868                            int if_index)
869 {
870         struct scm_ts_pktinfo ts_pktinfo;
871         struct net_device *orig_dev;
872
873         if (!skb_mac_header_was_set(skb))
874                 return;
875
876         memset(&ts_pktinfo, 0, sizeof(ts_pktinfo));
877
878         if (!if_index) {
879                 rcu_read_lock();
880                 orig_dev = dev_get_by_napi_id(skb_napi_id(skb));
881                 if (orig_dev)
882                         if_index = orig_dev->ifindex;
883                 rcu_read_unlock();
884         }
885         ts_pktinfo.if_index = if_index;
886
887         ts_pktinfo.pkt_length = skb->len - skb_mac_offset(skb);
888         put_cmsg(msg, SOL_SOCKET, SCM_TIMESTAMPING_PKTINFO,
889                  sizeof(ts_pktinfo), &ts_pktinfo);
890 }
891
892 /*
893  * called from sock_recv_timestamp() if sock_flag(sk, SOCK_RCVTSTAMP)
894  */
895 void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
896         struct sk_buff *skb)
897 {
898         int need_software_tstamp = sock_flag(sk, SOCK_RCVTSTAMP);
899         int new_tstamp = sock_flag(sk, SOCK_TSTAMP_NEW);
900         struct scm_timestamping_internal tss;
901         int empty = 1, false_tstamp = 0;
902         struct skb_shared_hwtstamps *shhwtstamps =
903                 skb_hwtstamps(skb);
904         int if_index;
905         ktime_t hwtstamp;
906         u32 tsflags;
907
908         /* Race occurred between timestamp enabling and packet
909            receiving.  Fill in the current time for now. */
910         if (need_software_tstamp && skb->tstamp == 0) {
911                 __net_timestamp(skb);
912                 false_tstamp = 1;
913         }
914
915         if (need_software_tstamp) {
916                 if (!sock_flag(sk, SOCK_RCVTSTAMPNS)) {
917                         if (new_tstamp) {
918                                 struct __kernel_sock_timeval tv;
919
920                                 skb_get_new_timestamp(skb, &tv);
921                                 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_NEW,
922                                          sizeof(tv), &tv);
923                         } else {
924                                 struct __kernel_old_timeval tv;
925
926                                 skb_get_timestamp(skb, &tv);
927                                 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_OLD,
928                                          sizeof(tv), &tv);
929                         }
930                 } else {
931                         if (new_tstamp) {
932                                 struct __kernel_timespec ts;
933
934                                 skb_get_new_timestampns(skb, &ts);
935                                 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPNS_NEW,
936                                          sizeof(ts), &ts);
937                         } else {
938                                 struct __kernel_old_timespec ts;
939
940                                 skb_get_timestampns(skb, &ts);
941                                 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPNS_OLD,
942                                          sizeof(ts), &ts);
943                         }
944                 }
945         }
946
947         memset(&tss, 0, sizeof(tss));
948         tsflags = READ_ONCE(sk->sk_tsflags);
949         if ((tsflags & SOF_TIMESTAMPING_SOFTWARE &&
950              (tsflags & SOF_TIMESTAMPING_RX_SOFTWARE ||
951               skb_is_err_queue(skb) ||
952               !(tsflags & SOF_TIMESTAMPING_OPT_RX_FILTER))) &&
953             ktime_to_timespec64_cond(skb->tstamp, tss.ts + 0))
954                 empty = 0;
955         if (shhwtstamps &&
956             (tsflags & SOF_TIMESTAMPING_RAW_HARDWARE &&
957              (tsflags & SOF_TIMESTAMPING_RX_HARDWARE ||
958               skb_is_err_queue(skb) ||
959               !(tsflags & SOF_TIMESTAMPING_OPT_RX_FILTER))) &&
960             !skb_is_swtx_tstamp(skb, false_tstamp)) {
961                 if_index = 0;
962                 if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP_NETDEV)
963                         hwtstamp = get_timestamp(sk, skb, &if_index);
964                 else
965                         hwtstamp = shhwtstamps->hwtstamp;
966
967                 if (tsflags & SOF_TIMESTAMPING_BIND_PHC)
968                         hwtstamp = ptp_convert_timestamp(&hwtstamp,
969                                                          READ_ONCE(sk->sk_bind_phc));
970
971                 if (ktime_to_timespec64_cond(hwtstamp, tss.ts + 2)) {
972                         empty = 0;
973
974                         if ((tsflags & SOF_TIMESTAMPING_OPT_PKTINFO) &&
975                             !skb_is_err_queue(skb))
976                                 put_ts_pktinfo(msg, skb, if_index);
977                 }
978         }
979         if (!empty) {
980                 if (sock_flag(sk, SOCK_TSTAMP_NEW))
981                         put_cmsg_scm_timestamping64(msg, &tss);
982                 else
983                         put_cmsg_scm_timestamping(msg, &tss);
984
985                 if (skb_is_err_queue(skb) && skb->len &&
986                     SKB_EXT_ERR(skb)->opt_stats)
987                         put_cmsg(msg, SOL_SOCKET, SCM_TIMESTAMPING_OPT_STATS,
988                                  skb->len, skb->data);
989         }
990 }
991 EXPORT_SYMBOL_GPL(__sock_recv_timestamp);
992
993 #ifdef CONFIG_WIRELESS
994 void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
995         struct sk_buff *skb)
996 {
997         int ack;
998
999         if (!sock_flag(sk, SOCK_WIFI_STATUS))
1000                 return;
1001         if (!skb->wifi_acked_valid)
1002                 return;
1003
1004         ack = skb->wifi_acked;
1005
1006         put_cmsg(msg, SOL_SOCKET, SCM_WIFI_STATUS, sizeof(ack), &ack);
1007 }
1008 EXPORT_SYMBOL_GPL(__sock_recv_wifi_status);
1009 #endif
1010
1011 static inline void sock_recv_drops(struct msghdr *msg, struct sock *sk,
1012                                    struct sk_buff *skb)
1013 {
1014         if (sock_flag(sk, SOCK_RXQ_OVFL) && skb && SOCK_SKB_CB(skb)->dropcount)
1015                 put_cmsg(msg, SOL_SOCKET, SO_RXQ_OVFL,
1016                         sizeof(__u32), &SOCK_SKB_CB(skb)->dropcount);
1017 }
1018
1019 static void sock_recv_mark(struct msghdr *msg, struct sock *sk,
1020                            struct sk_buff *skb)
1021 {
1022         if (sock_flag(sk, SOCK_RCVMARK) && skb) {
1023                 /* We must use a bounce buffer for CONFIG_HARDENED_USERCOPY=y */
1024                 __u32 mark = skb->mark;
1025
1026                 put_cmsg(msg, SOL_SOCKET, SO_MARK, sizeof(__u32), &mark);
1027         }
1028 }
1029
1030 void __sock_recv_cmsgs(struct msghdr *msg, struct sock *sk,
1031                        struct sk_buff *skb)
1032 {
1033         sock_recv_timestamp(msg, sk, skb);
1034         sock_recv_drops(msg, sk, skb);
1035         sock_recv_mark(msg, sk, skb);
1036 }
1037 EXPORT_SYMBOL_GPL(__sock_recv_cmsgs);
1038
1039 INDIRECT_CALLABLE_DECLARE(int inet_recvmsg(struct socket *, struct msghdr *,
1040                                            size_t, int));
1041 INDIRECT_CALLABLE_DECLARE(int inet6_recvmsg(struct socket *, struct msghdr *,
1042                                             size_t, int));
1043
1044 static noinline void call_trace_sock_recv_length(struct sock *sk, int ret, int flags)
1045 {
1046         trace_sock_recv_length(sk, ret, flags);
1047 }
1048
1049 static inline int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,
1050                                      int flags)
1051 {
1052         int ret = INDIRECT_CALL_INET(READ_ONCE(sock->ops)->recvmsg,
1053                                      inet6_recvmsg,
1054                                      inet_recvmsg, sock, msg,
1055                                      msg_data_left(msg), flags);
1056         if (trace_sock_recv_length_enabled())
1057                 call_trace_sock_recv_length(sock->sk, ret, flags);
1058         return ret;
1059 }
1060
1061 /**
1062  *      sock_recvmsg - receive a message from @sock
1063  *      @sock: socket
1064  *      @msg: message to receive
1065  *      @flags: message flags
1066  *
1067  *      Receives @msg from @sock, passing through LSM. Returns the total number
1068  *      of bytes received, or an error.
1069  */
1070 int sock_recvmsg(struct socket *sock, struct msghdr *msg, int flags)
1071 {
1072         int err = security_socket_recvmsg(sock, msg, msg_data_left(msg), flags);
1073
1074         return err ?: sock_recvmsg_nosec(sock, msg, flags);
1075 }
1076 EXPORT_SYMBOL(sock_recvmsg);
1077
1078 /**
1079  *      kernel_recvmsg - Receive a message from a socket (kernel space)
1080  *      @sock: The socket to receive the message from
1081  *      @msg: Received message
1082  *      @vec: Input s/g array for message data
1083  *      @num: Size of input s/g array
1084  *      @size: Number of bytes to read
1085  *      @flags: Message flags (MSG_DONTWAIT, etc...)
1086  *
1087  *      On return the msg structure contains the scatter/gather array passed in the
1088  *      vec argument. The array is modified so that it consists of the unfilled
1089  *      portion of the original array.
1090  *
1091  *      The returned value is the total number of bytes received, or an error.
1092  */
1093
1094 int kernel_recvmsg(struct socket *sock, struct msghdr *msg,
1095                    struct kvec *vec, size_t num, size_t size, int flags)
1096 {
1097         msg->msg_control_is_user = false;
1098         iov_iter_kvec(&msg->msg_iter, ITER_DEST, vec, num, size);
1099         return sock_recvmsg(sock, msg, flags);
1100 }
1101 EXPORT_SYMBOL(kernel_recvmsg);
1102
1103 static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
1104                                 struct pipe_inode_info *pipe, size_t len,
1105                                 unsigned int flags)
1106 {
1107         struct socket *sock = file->private_data;
1108         const struct proto_ops *ops;
1109
1110         ops = READ_ONCE(sock->ops);
1111         if (unlikely(!ops->splice_read))
1112                 return copy_splice_read(file, ppos, pipe, len, flags);
1113
1114         return ops->splice_read(sock, ppos, pipe, len, flags);
1115 }
1116
1117 static void sock_splice_eof(struct file *file)
1118 {
1119         struct socket *sock = file->private_data;
1120         const struct proto_ops *ops;
1121
1122         ops = READ_ONCE(sock->ops);
1123         if (ops->splice_eof)
1124                 ops->splice_eof(sock);
1125 }
1126
1127 static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to)
1128 {
1129         struct file *file = iocb->ki_filp;
1130         struct socket *sock = file->private_data;
1131         struct msghdr msg = {.msg_iter = *to,
1132                              .msg_iocb = iocb};
1133         ssize_t res;
1134
1135         if (file->f_flags & O_NONBLOCK || (iocb->ki_flags & IOCB_NOWAIT))
1136                 msg.msg_flags = MSG_DONTWAIT;
1137
1138         if (iocb->ki_pos != 0)
1139                 return -ESPIPE;
1140
1141         if (!iov_iter_count(to))        /* Match SYS5 behaviour */
1142                 return 0;
1143
1144         res = sock_recvmsg(sock, &msg, msg.msg_flags);
1145         *to = msg.msg_iter;
1146         return res;
1147 }
1148
1149 static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from)
1150 {
1151         struct file *file = iocb->ki_filp;
1152         struct socket *sock = file->private_data;
1153         struct msghdr msg = {.msg_iter = *from,
1154                              .msg_iocb = iocb};
1155         ssize_t res;
1156
1157         if (iocb->ki_pos != 0)
1158                 return -ESPIPE;
1159
1160         if (file->f_flags & O_NONBLOCK || (iocb->ki_flags & IOCB_NOWAIT))
1161                 msg.msg_flags = MSG_DONTWAIT;
1162
1163         if (sock->type == SOCK_SEQPACKET)
1164                 msg.msg_flags |= MSG_EOR;
1165
1166         res = __sock_sendmsg(sock, &msg);
1167         *from = msg.msg_iter;
1168         return res;
1169 }
1170
1171 /*
1172  * Atomic setting of ioctl hooks to avoid race
1173  * with module unload.
1174  */
1175
1176 static DEFINE_MUTEX(br_ioctl_mutex);
1177 static int (*br_ioctl_hook)(struct net *net, struct net_bridge *br,
1178                             unsigned int cmd, struct ifreq *ifr,
1179                             void __user *uarg);
1180
1181 void brioctl_set(int (*hook)(struct net *net, struct net_bridge *br,
1182                              unsigned int cmd, struct ifreq *ifr,
1183                              void __user *uarg))
1184 {
1185         mutex_lock(&br_ioctl_mutex);
1186         br_ioctl_hook = hook;
1187         mutex_unlock(&br_ioctl_mutex);
1188 }
1189 EXPORT_SYMBOL(brioctl_set);
1190
1191 int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
1192                   struct ifreq *ifr, void __user *uarg)
1193 {
1194         int err = -ENOPKG;
1195
1196         if (!br_ioctl_hook)
1197                 request_module("bridge");
1198
1199         mutex_lock(&br_ioctl_mutex);
1200         if (br_ioctl_hook)
1201                 err = br_ioctl_hook(net, br, cmd, ifr, uarg);
1202         mutex_unlock(&br_ioctl_mutex);
1203
1204         return err;
1205 }
1206
1207 static DEFINE_MUTEX(vlan_ioctl_mutex);
1208 static int (*vlan_ioctl_hook) (struct net *, void __user *arg);
1209
1210 void vlan_ioctl_set(int (*hook) (struct net *, void __user *))
1211 {
1212         mutex_lock(&vlan_ioctl_mutex);
1213         vlan_ioctl_hook = hook;
1214         mutex_unlock(&vlan_ioctl_mutex);
1215 }
1216 EXPORT_SYMBOL(vlan_ioctl_set);
1217
1218 static long sock_do_ioctl(struct net *net, struct socket *sock,
1219                           unsigned int cmd, unsigned long arg)
1220 {
1221         const struct proto_ops *ops = READ_ONCE(sock->ops);
1222         struct ifreq ifr;
1223         bool need_copyout;
1224         int err;
1225         void __user *argp = (void __user *)arg;
1226         void __user *data;
1227
1228         err = ops->ioctl(sock, cmd, arg);
1229
1230         /*
1231          * If this ioctl is unknown try to hand it down
1232          * to the NIC driver.
1233          */
1234         if (err != -ENOIOCTLCMD)
1235                 return err;
1236
1237         if (!is_socket_ioctl_cmd(cmd))
1238                 return -ENOTTY;
1239
1240         if (get_user_ifreq(&ifr, &data, argp))
1241                 return -EFAULT;
1242         err = dev_ioctl(net, cmd, &ifr, data, &need_copyout);
1243         if (!err && need_copyout)
1244                 if (put_user_ifreq(&ifr, argp))
1245                         return -EFAULT;
1246
1247         return err;
1248 }
1249
1250 /*
1251  *      With an ioctl, arg may well be a user mode pointer, but we don't know
1252  *      what to do with it - that's up to the protocol still.
1253  */
1254
1255 static long sock_ioctl(struct file *file, unsigned cmd, unsigned long arg)
1256 {
1257         const struct proto_ops  *ops;
1258         struct socket *sock;
1259         struct sock *sk;
1260         void __user *argp = (void __user *)arg;
1261         int pid, err;
1262         struct net *net;
1263
1264         sock = file->private_data;
1265         ops = READ_ONCE(sock->ops);
1266         sk = sock->sk;
1267         net = sock_net(sk);
1268         if (unlikely(cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15))) {
1269                 struct ifreq ifr;
1270                 void __user *data;
1271                 bool need_copyout;
1272                 if (get_user_ifreq(&ifr, &data, argp))
1273                         return -EFAULT;
1274                 err = dev_ioctl(net, cmd, &ifr, data, &need_copyout);
1275                 if (!err && need_copyout)
1276                         if (put_user_ifreq(&ifr, argp))
1277                                 return -EFAULT;
1278         } else
1279 #ifdef CONFIG_WEXT_CORE
1280         if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
1281                 err = wext_handle_ioctl(net, cmd, argp);
1282         } else
1283 #endif
1284                 switch (cmd) {
1285                 case FIOSETOWN:
1286                 case SIOCSPGRP:
1287                         err = -EFAULT;
1288                         if (get_user(pid, (int __user *)argp))
1289                                 break;
1290                         err = f_setown(sock->file, pid, 1);
1291                         break;
1292                 case FIOGETOWN:
1293                 case SIOCGPGRP:
1294                         err = put_user(f_getown(sock->file),
1295                                        (int __user *)argp);
1296                         break;
1297                 case SIOCGIFBR:
1298                 case SIOCSIFBR:
1299                 case SIOCBRADDBR:
1300                 case SIOCBRDELBR:
1301                         err = br_ioctl_call(net, NULL, cmd, NULL, argp);
1302                         break;
1303                 case SIOCGIFVLAN:
1304                 case SIOCSIFVLAN:
1305                         err = -ENOPKG;
1306                         if (!vlan_ioctl_hook)
1307                                 request_module("8021q");
1308
1309                         mutex_lock(&vlan_ioctl_mutex);
1310                         if (vlan_ioctl_hook)
1311                                 err = vlan_ioctl_hook(net, argp);
1312                         mutex_unlock(&vlan_ioctl_mutex);
1313                         break;
1314                 case SIOCGSKNS:
1315                         err = -EPERM;
1316                         if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
1317                                 break;
1318
1319                         err = open_related_ns(&net->ns, get_net_ns);
1320                         break;
1321                 case SIOCGSTAMP_OLD:
1322                 case SIOCGSTAMPNS_OLD:
1323                         if (!ops->gettstamp) {
1324                                 err = -ENOIOCTLCMD;
1325                                 break;
1326                         }
1327                         err = ops->gettstamp(sock, argp,
1328                                              cmd == SIOCGSTAMP_OLD,
1329                                              !IS_ENABLED(CONFIG_64BIT));
1330                         break;
1331                 case SIOCGSTAMP_NEW:
1332                 case SIOCGSTAMPNS_NEW:
1333                         if (!ops->gettstamp) {
1334                                 err = -ENOIOCTLCMD;
1335                                 break;
1336                         }
1337                         err = ops->gettstamp(sock, argp,
1338                                              cmd == SIOCGSTAMP_NEW,
1339                                              false);
1340                         break;
1341
1342                 case SIOCGIFCONF:
1343                         err = dev_ifconf(net, argp);
1344                         break;
1345
1346                 default:
1347                         err = sock_do_ioctl(net, sock, cmd, arg);
1348                         break;
1349                 }
1350         return err;
1351 }
1352
1353 /**
1354  *      sock_create_lite - creates a socket
1355  *      @family: protocol family (AF_INET, ...)
1356  *      @type: communication type (SOCK_STREAM, ...)
1357  *      @protocol: protocol (0, ...)
1358  *      @res: new socket
1359  *
1360  *      Creates a new socket and assigns it to @res, passing through LSM.
1361  *      The new socket initialization is not complete, see kernel_accept().
1362  *      Returns 0 or an error. On failure @res is set to %NULL.
1363  *      This function internally uses GFP_KERNEL.
1364  */
1365
1366 int sock_create_lite(int family, int type, int protocol, struct socket **res)
1367 {
1368         int err;
1369         struct socket *sock = NULL;
1370
1371         err = security_socket_create(family, type, protocol, 1);
1372         if (err)
1373                 goto out;
1374
1375         sock = sock_alloc();
1376         if (!sock) {
1377                 err = -ENOMEM;
1378                 goto out;
1379         }
1380
1381         sock->type = type;
1382         err = security_socket_post_create(sock, family, type, protocol, 1);
1383         if (err)
1384                 goto out_release;
1385
1386 out:
1387         *res = sock;
1388         return err;
1389 out_release:
1390         sock_release(sock);
1391         sock = NULL;
1392         goto out;
1393 }
1394 EXPORT_SYMBOL(sock_create_lite);
1395
1396 /* No kernel lock held - perfect */
1397 static __poll_t sock_poll(struct file *file, poll_table *wait)
1398 {
1399         struct socket *sock = file->private_data;
1400         const struct proto_ops *ops = READ_ONCE(sock->ops);
1401         __poll_t events = poll_requested_events(wait), flag = 0;
1402
1403         if (!ops->poll)
1404                 return 0;
1405
1406         if (sk_can_busy_loop(sock->sk)) {
1407                 /* poll once if requested by the syscall */
1408                 if (events & POLL_BUSY_LOOP)
1409                         sk_busy_loop(sock->sk, 1);
1410
1411                 /* if this socket can poll_ll, tell the system call */
1412                 flag = POLL_BUSY_LOOP;
1413         }
1414
1415         return ops->poll(file, sock, wait) | flag;
1416 }
1417
1418 static int sock_mmap(struct file *file, struct vm_area_struct *vma)
1419 {
1420         struct socket *sock = file->private_data;
1421
1422         return READ_ONCE(sock->ops)->mmap(file, sock, vma);
1423 }
1424
1425 static int sock_close(struct inode *inode, struct file *filp)
1426 {
1427         __sock_release(SOCKET_I(inode), inode);
1428         return 0;
1429 }
1430
1431 /*
1432  *      Update the socket async list
1433  *
1434  *      Fasync_list locking strategy.
1435  *
1436  *      1. fasync_list is modified only under process context socket lock
1437  *         i.e. under semaphore.
1438  *      2. fasync_list is used under read_lock(&sk->sk_callback_lock)
1439  *         or under socket lock
1440  */
1441
1442 static int sock_fasync(int fd, struct file *filp, int on)
1443 {
1444         struct socket *sock = filp->private_data;
1445         struct sock *sk = sock->sk;
1446         struct socket_wq *wq = &sock->wq;
1447
1448         if (sk == NULL)
1449                 return -EINVAL;
1450
1451         lock_sock(sk);
1452         fasync_helper(fd, filp, on, &wq->fasync_list);
1453
1454         if (!wq->fasync_list)
1455                 sock_reset_flag(sk, SOCK_FASYNC);
1456         else
1457                 sock_set_flag(sk, SOCK_FASYNC);
1458
1459         release_sock(sk);
1460         return 0;
1461 }
1462
1463 /* This function may be called only under rcu_lock */
1464
1465 int sock_wake_async(struct socket_wq *wq, int how, int band)
1466 {
1467         if (!wq || !wq->fasync_list)
1468                 return -1;
1469
1470         switch (how) {
1471         case SOCK_WAKE_WAITD:
1472                 if (test_bit(SOCKWQ_ASYNC_WAITDATA, &wq->flags))
1473                         break;
1474                 goto call_kill;
1475         case SOCK_WAKE_SPACE:
1476                 if (!test_and_clear_bit(SOCKWQ_ASYNC_NOSPACE, &wq->flags))
1477                         break;
1478                 fallthrough;
1479         case SOCK_WAKE_IO:
1480 call_kill:
1481                 kill_fasync(&wq->fasync_list, SIGIO, band);
1482                 break;
1483         case SOCK_WAKE_URG:
1484                 kill_fasync(&wq->fasync_list, SIGURG, band);
1485         }
1486
1487         return 0;
1488 }
1489 EXPORT_SYMBOL(sock_wake_async);
1490
1491 /**
1492  *      __sock_create - creates a socket
1493  *      @net: net namespace
1494  *      @family: protocol family (AF_INET, ...)
1495  *      @type: communication type (SOCK_STREAM, ...)
1496  *      @protocol: protocol (0, ...)
1497  *      @res: new socket
1498  *      @kern: boolean for kernel space sockets
1499  *
1500  *      Creates a new socket and assigns it to @res, passing through LSM.
1501  *      Returns 0 or an error. On failure @res is set to %NULL. @kern must
1502  *      be set to true if the socket resides in kernel space.
1503  *      This function internally uses GFP_KERNEL.
1504  */
1505
1506 int __sock_create(struct net *net, int family, int type, int protocol,
1507                          struct socket **res, int kern)
1508 {
1509         int err;
1510         struct socket *sock;
1511         const struct net_proto_family *pf;
1512
1513         /*
1514          *      Check protocol is in range
1515          */
1516         if (family < 0 || family >= NPROTO)
1517                 return -EAFNOSUPPORT;
1518         if (type < 0 || type >= SOCK_MAX)
1519                 return -EINVAL;
1520
1521         /* Compatibility.
1522
1523            This uglymoron is moved from INET layer to here to avoid
1524            deadlock in module load.
1525          */
1526         if (family == PF_INET && type == SOCK_PACKET) {
1527                 pr_info_once("%s uses obsolete (PF_INET,SOCK_PACKET)\n",
1528                              current->comm);
1529                 family = PF_PACKET;
1530         }
1531
1532         err = security_socket_create(family, type, protocol, kern);
1533         if (err)
1534                 return err;
1535
1536         /*
1537          *      Allocate the socket and allow the family to set things up. if
1538          *      the protocol is 0, the family is instructed to select an appropriate
1539          *      default.
1540          */
1541         sock = sock_alloc();
1542         if (!sock) {
1543                 net_warn_ratelimited("socket: no more sockets\n");
1544                 return -ENFILE; /* Not exactly a match, but its the
1545                                    closest posix thing */
1546         }
1547
1548         sock->type = type;
1549
1550 #ifdef CONFIG_MODULES
1551         /* Attempt to load a protocol module if the find failed.
1552          *
1553          * 12/09/1996 Marcin: But! this makes REALLY only sense, if the user
1554          * requested real, full-featured networking support upon configuration.
1555          * Otherwise module support will break!
1556          */
1557         if (rcu_access_pointer(net_families[family]) == NULL)
1558                 request_module("net-pf-%d", family);
1559 #endif
1560
1561         rcu_read_lock();
1562         pf = rcu_dereference(net_families[family]);
1563         err = -EAFNOSUPPORT;
1564         if (!pf)
1565                 goto out_release;
1566
1567         /*
1568          * We will call the ->create function, that possibly is in a loadable
1569          * module, so we have to bump that loadable module refcnt first.
1570          */
1571         if (!try_module_get(pf->owner))
1572                 goto out_release;
1573
1574         /* Now protected by module ref count */
1575         rcu_read_unlock();
1576
1577         err = pf->create(net, sock, protocol, kern);
1578         if (err < 0)
1579                 goto out_module_put;
1580
1581         /*
1582          * Now to bump the refcnt of the [loadable] module that owns this
1583          * socket at sock_release time we decrement its refcnt.
1584          */
1585         if (!try_module_get(sock->ops->owner))
1586                 goto out_module_busy;
1587
1588         /*
1589          * Now that we're done with the ->create function, the [loadable]
1590          * module can have its refcnt decremented
1591          */
1592         module_put(pf->owner);
1593         err = security_socket_post_create(sock, family, type, protocol, kern);
1594         if (err)
1595                 goto out_sock_release;
1596         *res = sock;
1597
1598         return 0;
1599
1600 out_module_busy:
1601         err = -EAFNOSUPPORT;
1602 out_module_put:
1603         sock->ops = NULL;
1604         module_put(pf->owner);
1605 out_sock_release:
1606         sock_release(sock);
1607         return err;
1608
1609 out_release:
1610         rcu_read_unlock();
1611         goto out_sock_release;
1612 }
1613 EXPORT_SYMBOL(__sock_create);
1614
1615 /**
1616  *      sock_create - creates a socket
1617  *      @family: protocol family (AF_INET, ...)
1618  *      @type: communication type (SOCK_STREAM, ...)
1619  *      @protocol: protocol (0, ...)
1620  *      @res: new socket
1621  *
1622  *      A wrapper around __sock_create().
1623  *      Returns 0 or an error. This function internally uses GFP_KERNEL.
1624  */
1625
1626 int sock_create(int family, int type, int protocol, struct socket **res)
1627 {
1628         return __sock_create(current->nsproxy->net_ns, family, type, protocol, res, 0);
1629 }
1630 EXPORT_SYMBOL(sock_create);
1631
1632 /**
1633  *      sock_create_kern - creates a socket (kernel space)
1634  *      @net: net namespace
1635  *      @family: protocol family (AF_INET, ...)
1636  *      @type: communication type (SOCK_STREAM, ...)
1637  *      @protocol: protocol (0, ...)
1638  *      @res: new socket
1639  *
1640  *      A wrapper around __sock_create().
1641  *      Returns 0 or an error. This function internally uses GFP_KERNEL.
1642  */
1643
1644 int sock_create_kern(struct net *net, int family, int type, int protocol, struct socket **res)
1645 {
1646         return __sock_create(net, family, type, protocol, res, 1);
1647 }
1648 EXPORT_SYMBOL(sock_create_kern);
1649
1650 static struct socket *__sys_socket_create(int family, int type, int protocol)
1651 {
1652         struct socket *sock;
1653         int retval;
1654
1655         /* Check the SOCK_* constants for consistency.  */
1656         BUILD_BUG_ON(SOCK_CLOEXEC != O_CLOEXEC);
1657         BUILD_BUG_ON((SOCK_MAX | SOCK_TYPE_MASK) != SOCK_TYPE_MASK);
1658         BUILD_BUG_ON(SOCK_CLOEXEC & SOCK_TYPE_MASK);
1659         BUILD_BUG_ON(SOCK_NONBLOCK & SOCK_TYPE_MASK);
1660
1661         if ((type & ~SOCK_TYPE_MASK) & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1662                 return ERR_PTR(-EINVAL);
1663         type &= SOCK_TYPE_MASK;
1664
1665         retval = sock_create(family, type, protocol, &sock);
1666         if (retval < 0)
1667                 return ERR_PTR(retval);
1668
1669         return sock;
1670 }
1671
1672 struct file *__sys_socket_file(int family, int type, int protocol)
1673 {
1674         struct socket *sock;
1675         int flags;
1676
1677         sock = __sys_socket_create(family, type, protocol);
1678         if (IS_ERR(sock))
1679                 return ERR_CAST(sock);
1680
1681         flags = type & ~SOCK_TYPE_MASK;
1682         if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1683                 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1684
1685         return sock_alloc_file(sock, flags, NULL);
1686 }
1687
1688 /*      A hook for bpf progs to attach to and update socket protocol.
1689  *
1690  *      A static noinline declaration here could cause the compiler to
1691  *      optimize away the function. A global noinline declaration will
1692  *      keep the definition, but may optimize away the callsite.
1693  *      Therefore, __weak is needed to ensure that the call is still
1694  *      emitted, by telling the compiler that we don't know what the
1695  *      function might eventually be.
1696  */
1697
1698 __bpf_hook_start();
1699
1700 __weak noinline int update_socket_protocol(int family, int type, int protocol)
1701 {
1702         return protocol;
1703 }
1704
1705 __bpf_hook_end();
1706
1707 int __sys_socket(int family, int type, int protocol)
1708 {
1709         struct socket *sock;
1710         int flags;
1711
1712         sock = __sys_socket_create(family, type,
1713                                    update_socket_protocol(family, type, protocol));
1714         if (IS_ERR(sock))
1715                 return PTR_ERR(sock);
1716
1717         flags = type & ~SOCK_TYPE_MASK;
1718         if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1719                 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1720
1721         return sock_map_fd(sock, flags & (O_CLOEXEC | O_NONBLOCK));
1722 }
1723
1724 SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
1725 {
1726         return __sys_socket(family, type, protocol);
1727 }
1728
1729 /*
1730  *      Create a pair of connected sockets.
1731  */
1732
1733 int __sys_socketpair(int family, int type, int protocol, int __user *usockvec)
1734 {
1735         struct socket *sock1, *sock2;
1736         int fd1, fd2, err;
1737         struct file *newfile1, *newfile2;
1738         int flags;
1739
1740         flags = type & ~SOCK_TYPE_MASK;
1741         if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1742                 return -EINVAL;
1743         type &= SOCK_TYPE_MASK;
1744
1745         if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1746                 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1747
1748         /*
1749          * reserve descriptors and make sure we won't fail
1750          * to return them to userland.
1751          */
1752         fd1 = get_unused_fd_flags(flags);
1753         if (unlikely(fd1 < 0))
1754                 return fd1;
1755
1756         fd2 = get_unused_fd_flags(flags);
1757         if (unlikely(fd2 < 0)) {
1758                 put_unused_fd(fd1);
1759                 return fd2;
1760         }
1761
1762         err = put_user(fd1, &usockvec[0]);
1763         if (err)
1764                 goto out;
1765
1766         err = put_user(fd2, &usockvec[1]);
1767         if (err)
1768                 goto out;
1769
1770         /*
1771          * Obtain the first socket and check if the underlying protocol
1772          * supports the socketpair call.
1773          */
1774
1775         err = sock_create(family, type, protocol, &sock1);
1776         if (unlikely(err < 0))
1777                 goto out;
1778
1779         err = sock_create(family, type, protocol, &sock2);
1780         if (unlikely(err < 0)) {
1781                 sock_release(sock1);
1782                 goto out;
1783         }
1784
1785         err = security_socket_socketpair(sock1, sock2);
1786         if (unlikely(err)) {
1787                 sock_release(sock2);
1788                 sock_release(sock1);
1789                 goto out;
1790         }
1791
1792         err = READ_ONCE(sock1->ops)->socketpair(sock1, sock2);
1793         if (unlikely(err < 0)) {
1794                 sock_release(sock2);
1795                 sock_release(sock1);
1796                 goto out;
1797         }
1798
1799         newfile1 = sock_alloc_file(sock1, flags, NULL);
1800         if (IS_ERR(newfile1)) {
1801                 err = PTR_ERR(newfile1);
1802                 sock_release(sock2);
1803                 goto out;
1804         }
1805
1806         newfile2 = sock_alloc_file(sock2, flags, NULL);
1807         if (IS_ERR(newfile2)) {
1808                 err = PTR_ERR(newfile2);
1809                 fput(newfile1);
1810                 goto out;
1811         }
1812
1813         audit_fd_pair(fd1, fd2);
1814
1815         fd_install(fd1, newfile1);
1816         fd_install(fd2, newfile2);
1817         return 0;
1818
1819 out:
1820         put_unused_fd(fd2);
1821         put_unused_fd(fd1);
1822         return err;
1823 }
1824
1825 SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
1826                 int __user *, usockvec)
1827 {
1828         return __sys_socketpair(family, type, protocol, usockvec);
1829 }
1830
1831 int __sys_bind_socket(struct socket *sock, struct sockaddr_storage *address,
1832                       int addrlen)
1833 {
1834         int err;
1835
1836         err = security_socket_bind(sock, (struct sockaddr *)address,
1837                                    addrlen);
1838         if (!err)
1839                 err = READ_ONCE(sock->ops)->bind(sock,
1840                                                  (struct sockaddr *)address,
1841                                                  addrlen);
1842         return err;
1843 }
1844
1845 /*
1846  *      Bind a name to a socket. Nothing much to do here since it's
1847  *      the protocol's responsibility to handle the local address.
1848  *
1849  *      We move the socket address to kernel space before we call
1850  *      the protocol layer (having also checked the address is ok).
1851  */
1852
1853 int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
1854 {
1855         struct socket *sock;
1856         struct sockaddr_storage address;
1857         int err, fput_needed;
1858
1859         sock = sockfd_lookup_light(fd, &err, &fput_needed);
1860         if (sock) {
1861                 err = move_addr_to_kernel(umyaddr, addrlen, &address);
1862                 if (!err)
1863                         err = __sys_bind_socket(sock, &address, addrlen);
1864                 fput_light(sock->file, fput_needed);
1865         }
1866         return err;
1867 }
1868
1869 SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
1870 {
1871         return __sys_bind(fd, umyaddr, addrlen);
1872 }
1873
1874 /*
1875  *      Perform a listen. Basically, we allow the protocol to do anything
1876  *      necessary for a listen, and if that works, we mark the socket as
1877  *      ready for listening.
1878  */
1879 int __sys_listen_socket(struct socket *sock, int backlog)
1880 {
1881         int somaxconn, err;
1882
1883         somaxconn = READ_ONCE(sock_net(sock->sk)->core.sysctl_somaxconn);
1884         if ((unsigned int)backlog > somaxconn)
1885                 backlog = somaxconn;
1886
1887         err = security_socket_listen(sock, backlog);
1888         if (!err)
1889                 err = READ_ONCE(sock->ops)->listen(sock, backlog);
1890         return err;
1891 }
1892
1893 int __sys_listen(int fd, int backlog)
1894 {
1895         struct socket *sock;
1896         int err, fput_needed;
1897
1898         sock = sockfd_lookup_light(fd, &err, &fput_needed);
1899         if (sock) {
1900                 err = __sys_listen_socket(sock, backlog);
1901                 fput_light(sock->file, fput_needed);
1902         }
1903         return err;
1904 }
1905
1906 SYSCALL_DEFINE2(listen, int, fd, int, backlog)
1907 {
1908         return __sys_listen(fd, backlog);
1909 }
1910
1911 struct file *do_accept(struct file *file, struct proto_accept_arg *arg,
1912                        struct sockaddr __user *upeer_sockaddr,
1913                        int __user *upeer_addrlen, int flags)
1914 {
1915         struct socket *sock, *newsock;
1916         struct file *newfile;
1917         int err, len;
1918         struct sockaddr_storage address;
1919         const struct proto_ops *ops;
1920
1921         sock = sock_from_file(file);
1922         if (!sock)
1923                 return ERR_PTR(-ENOTSOCK);
1924
1925         newsock = sock_alloc();
1926         if (!newsock)
1927                 return ERR_PTR(-ENFILE);
1928         ops = READ_ONCE(sock->ops);
1929
1930         newsock->type = sock->type;
1931         newsock->ops = ops;
1932
1933         /*
1934          * We don't need try_module_get here, as the listening socket (sock)
1935          * has the protocol module (sock->ops->owner) held.
1936          */
1937         __module_get(ops->owner);
1938
1939         newfile = sock_alloc_file(newsock, flags, sock->sk->sk_prot_creator->name);
1940         if (IS_ERR(newfile))
1941                 return newfile;
1942
1943         err = security_socket_accept(sock, newsock);
1944         if (err)
1945                 goto out_fd;
1946
1947         arg->flags |= sock->file->f_flags;
1948         err = ops->accept(sock, newsock, arg);
1949         if (err < 0)
1950                 goto out_fd;
1951
1952         if (upeer_sockaddr) {
1953                 len = ops->getname(newsock, (struct sockaddr *)&address, 2);
1954                 if (len < 0) {
1955                         err = -ECONNABORTED;
1956                         goto out_fd;
1957                 }
1958                 err = move_addr_to_user(&address,
1959                                         len, upeer_sockaddr, upeer_addrlen);
1960                 if (err < 0)
1961                         goto out_fd;
1962         }
1963
1964         /* File flags are not inherited via accept() unlike another OSes. */
1965         return newfile;
1966 out_fd:
1967         fput(newfile);
1968         return ERR_PTR(err);
1969 }
1970
1971 static int __sys_accept4_file(struct file *file, struct sockaddr __user *upeer_sockaddr,
1972                               int __user *upeer_addrlen, int flags)
1973 {
1974         struct proto_accept_arg arg = { };
1975         struct file *newfile;
1976         int newfd;
1977
1978         if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1979                 return -EINVAL;
1980
1981         if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1982                 flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1983
1984         newfd = get_unused_fd_flags(flags);
1985         if (unlikely(newfd < 0))
1986                 return newfd;
1987
1988         newfile = do_accept(file, &arg, upeer_sockaddr, upeer_addrlen,
1989                             flags);
1990         if (IS_ERR(newfile)) {
1991                 put_unused_fd(newfd);
1992                 return PTR_ERR(newfile);
1993         }
1994         fd_install(newfd, newfile);
1995         return newfd;
1996 }
1997
1998 /*
1999  *      For accept, we attempt to create a new socket, set up the link
2000  *      with the client, wake up the client, then return the new
2001  *      connected fd. We collect the address of the connector in kernel
2002  *      space and move it to user at the very end. This is unclean because
2003  *      we open the socket then return an error.
2004  *
2005  *      1003.1g adds the ability to recvmsg() to query connection pending
2006  *      status to recvmsg. We need to add that support in a way thats
2007  *      clean when we restructure accept also.
2008  */
2009
2010 int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,
2011                   int __user *upeer_addrlen, int flags)
2012 {
2013         int ret = -EBADF;
2014         struct fd f;
2015
2016         f = fdget(fd);
2017         if (f.file) {
2018                 ret = __sys_accept4_file(f.file, upeer_sockaddr,
2019                                          upeer_addrlen, flags);
2020                 fdput(f);
2021         }
2022
2023         return ret;
2024 }
2025
2026 SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
2027                 int __user *, upeer_addrlen, int, flags)
2028 {
2029         return __sys_accept4(fd, upeer_sockaddr, upeer_addrlen, flags);
2030 }
2031
2032 SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
2033                 int __user *, upeer_addrlen)
2034 {
2035         return __sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0);
2036 }
2037
2038 /*
2039  *      Attempt to connect to a socket with the server address.  The address
2040  *      is in user space so we verify it is OK and move it to kernel space.
2041  *
2042  *      For 1003.1g we need to add clean support for a bind to AF_UNSPEC to
2043  *      break bindings
2044  *
2045  *      NOTE: 1003.1g draft 6.3 is broken with respect to AX.25/NetROM and
2046  *      other SEQPACKET protocols that take time to connect() as it doesn't
2047  *      include the -EINPROGRESS status for such sockets.
2048  */
2049
2050 int __sys_connect_file(struct file *file, struct sockaddr_storage *address,
2051                        int addrlen, int file_flags)
2052 {
2053         struct socket *sock;
2054         int err;
2055
2056         sock = sock_from_file(file);
2057         if (!sock) {
2058                 err = -ENOTSOCK;
2059                 goto out;
2060         }
2061
2062         err =
2063             security_socket_connect(sock, (struct sockaddr *)address, addrlen);
2064         if (err)
2065                 goto out;
2066
2067         err = READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)address,
2068                                 addrlen, sock->file->f_flags | file_flags);
2069 out:
2070         return err;
2071 }
2072
2073 int __sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
2074 {
2075         int ret = -EBADF;
2076         struct fd f;
2077
2078         f = fdget(fd);
2079         if (f.file) {
2080                 struct sockaddr_storage address;
2081
2082                 ret = move_addr_to_kernel(uservaddr, addrlen, &address);
2083                 if (!ret)
2084                         ret = __sys_connect_file(f.file, &address, addrlen, 0);
2085                 fdput(f);
2086         }
2087
2088         return ret;
2089 }
2090
2091 SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
2092                 int, addrlen)
2093 {
2094         return __sys_connect(fd, uservaddr, addrlen);
2095 }
2096
2097 /*
2098  *      Get the local address ('name') of a socket object. Move the obtained
2099  *      name to user space.
2100  */
2101
2102 int __sys_getsockname(int fd, struct sockaddr __user *usockaddr,
2103                       int __user *usockaddr_len)
2104 {
2105         struct socket *sock;
2106         struct sockaddr_storage address;
2107         int err, fput_needed;
2108
2109         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2110         if (!sock)
2111                 goto out;
2112
2113         err = security_socket_getsockname(sock);
2114         if (err)
2115                 goto out_put;
2116
2117         err = READ_ONCE(sock->ops)->getname(sock, (struct sockaddr *)&address, 0);
2118         if (err < 0)
2119                 goto out_put;
2120         /* "err" is actually length in this case */
2121         err = move_addr_to_user(&address, err, usockaddr, usockaddr_len);
2122
2123 out_put:
2124         fput_light(sock->file, fput_needed);
2125 out:
2126         return err;
2127 }
2128
2129 SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr,
2130                 int __user *, usockaddr_len)
2131 {
2132         return __sys_getsockname(fd, usockaddr, usockaddr_len);
2133 }
2134
2135 /*
2136  *      Get the remote address ('name') of a socket object. Move the obtained
2137  *      name to user space.
2138  */
2139
2140 int __sys_getpeername(int fd, struct sockaddr __user *usockaddr,
2141                       int __user *usockaddr_len)
2142 {
2143         struct socket *sock;
2144         struct sockaddr_storage address;
2145         int err, fput_needed;
2146
2147         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2148         if (sock != NULL) {
2149                 const struct proto_ops *ops = READ_ONCE(sock->ops);
2150
2151                 err = security_socket_getpeername(sock);
2152                 if (err) {
2153                         fput_light(sock->file, fput_needed);
2154                         return err;
2155                 }
2156
2157                 err = ops->getname(sock, (struct sockaddr *)&address, 1);
2158                 if (err >= 0)
2159                         /* "err" is actually length in this case */
2160                         err = move_addr_to_user(&address, err, usockaddr,
2161                                                 usockaddr_len);
2162                 fput_light(sock->file, fput_needed);
2163         }
2164         return err;
2165 }
2166
2167 SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
2168                 int __user *, usockaddr_len)
2169 {
2170         return __sys_getpeername(fd, usockaddr, usockaddr_len);
2171 }
2172
2173 /*
2174  *      Send a datagram to a given address. We move the address into kernel
2175  *      space and check the user space data area is readable before invoking
2176  *      the protocol.
2177  */
2178 int __sys_sendto(int fd, void __user *buff, size_t len, unsigned int flags,
2179                  struct sockaddr __user *addr,  int addr_len)
2180 {
2181         struct socket *sock;
2182         struct sockaddr_storage address;
2183         int err;
2184         struct msghdr msg;
2185         int fput_needed;
2186
2187         err = import_ubuf(ITER_SOURCE, buff, len, &msg.msg_iter);
2188         if (unlikely(err))
2189                 return err;
2190         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2191         if (!sock)
2192                 goto out;
2193
2194         msg.msg_name = NULL;
2195         msg.msg_control = NULL;
2196         msg.msg_controllen = 0;
2197         msg.msg_namelen = 0;
2198         msg.msg_ubuf = NULL;
2199         if (addr) {
2200                 err = move_addr_to_kernel(addr, addr_len, &address);
2201                 if (err < 0)
2202                         goto out_put;
2203                 msg.msg_name = (struct sockaddr *)&address;
2204                 msg.msg_namelen = addr_len;
2205         }
2206         flags &= ~MSG_INTERNAL_SENDMSG_FLAGS;
2207         if (sock->file->f_flags & O_NONBLOCK)
2208                 flags |= MSG_DONTWAIT;
2209         msg.msg_flags = flags;
2210         err = __sock_sendmsg(sock, &msg);
2211
2212 out_put:
2213         fput_light(sock->file, fput_needed);
2214 out:
2215         return err;
2216 }
2217
2218 SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
2219                 unsigned int, flags, struct sockaddr __user *, addr,
2220                 int, addr_len)
2221 {
2222         return __sys_sendto(fd, buff, len, flags, addr, addr_len);
2223 }
2224
2225 /*
2226  *      Send a datagram down a socket.
2227  */
2228
2229 SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len,
2230                 unsigned int, flags)
2231 {
2232         return __sys_sendto(fd, buff, len, flags, NULL, 0);
2233 }
2234
2235 /*
2236  *      Receive a frame from the socket and optionally record the address of the
2237  *      sender. We verify the buffers are writable and if needed move the
2238  *      sender address from kernel to user space.
2239  */
2240 int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags,
2241                    struct sockaddr __user *addr, int __user *addr_len)
2242 {
2243         struct sockaddr_storage address;
2244         struct msghdr msg = {
2245                 /* Save some cycles and don't copy the address if not needed */
2246                 .msg_name = addr ? (struct sockaddr *)&address : NULL,
2247         };
2248         struct socket *sock;
2249         int err, err2;
2250         int fput_needed;
2251
2252         err = import_ubuf(ITER_DEST, ubuf, size, &msg.msg_iter);
2253         if (unlikely(err))
2254                 return err;
2255         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2256         if (!sock)
2257                 goto out;
2258
2259         if (sock->file->f_flags & O_NONBLOCK)
2260                 flags |= MSG_DONTWAIT;
2261         err = sock_recvmsg(sock, &msg, flags);
2262
2263         if (err >= 0 && addr != NULL) {
2264                 err2 = move_addr_to_user(&address,
2265                                          msg.msg_namelen, addr, addr_len);
2266                 if (err2 < 0)
2267                         err = err2;
2268         }
2269
2270         fput_light(sock->file, fput_needed);
2271 out:
2272         return err;
2273 }
2274
2275 SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
2276                 unsigned int, flags, struct sockaddr __user *, addr,
2277                 int __user *, addr_len)
2278 {
2279         return __sys_recvfrom(fd, ubuf, size, flags, addr, addr_len);
2280 }
2281
2282 /*
2283  *      Receive a datagram from a socket.
2284  */
2285
2286 SYSCALL_DEFINE4(recv, int, fd, void __user *, ubuf, size_t, size,
2287                 unsigned int, flags)
2288 {
2289         return __sys_recvfrom(fd, ubuf, size, flags, NULL, NULL);
2290 }
2291
2292 static bool sock_use_custom_sol_socket(const struct socket *sock)
2293 {
2294         return test_bit(SOCK_CUSTOM_SOCKOPT, &sock->flags);
2295 }
2296
2297 int do_sock_setsockopt(struct socket *sock, bool compat, int level,
2298                        int optname, sockptr_t optval, int optlen)
2299 {
2300         const struct proto_ops *ops;
2301         char *kernel_optval = NULL;
2302         int err;
2303
2304         if (optlen < 0)
2305                 return -EINVAL;
2306
2307         err = security_socket_setsockopt(sock, level, optname);
2308         if (err)
2309                 goto out_put;
2310
2311         if (!compat)
2312                 err = BPF_CGROUP_RUN_PROG_SETSOCKOPT(sock->sk, &level, &optname,
2313                                                      optval, &optlen,
2314                                                      &kernel_optval);
2315         if (err < 0)
2316                 goto out_put;
2317         if (err > 0) {
2318                 err = 0;
2319                 goto out_put;
2320         }
2321
2322         if (kernel_optval)
2323                 optval = KERNEL_SOCKPTR(kernel_optval);
2324         ops = READ_ONCE(sock->ops);
2325         if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock))
2326                 err = sock_setsockopt(sock, level, optname, optval, optlen);
2327         else if (unlikely(!ops->setsockopt))
2328                 err = -EOPNOTSUPP;
2329         else
2330                 err = ops->setsockopt(sock, level, optname, optval,
2331                                             optlen);
2332         kfree(kernel_optval);
2333 out_put:
2334         return err;
2335 }
2336 EXPORT_SYMBOL(do_sock_setsockopt);
2337
2338 /* Set a socket option. Because we don't know the option lengths we have
2339  * to pass the user mode parameter for the protocols to sort out.
2340  */
2341 int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval,
2342                      int optlen)
2343 {
2344         sockptr_t optval = USER_SOCKPTR(user_optval);
2345         bool compat = in_compat_syscall();
2346         int err, fput_needed;
2347         struct socket *sock;
2348
2349         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2350         if (!sock)
2351                 return err;
2352
2353         err = do_sock_setsockopt(sock, compat, level, optname, optval, optlen);
2354
2355         fput_light(sock->file, fput_needed);
2356         return err;
2357 }
2358
2359 SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname,
2360                 char __user *, optval, int, optlen)
2361 {
2362         return __sys_setsockopt(fd, level, optname, optval, optlen);
2363 }
2364
2365 INDIRECT_CALLABLE_DECLARE(bool tcp_bpf_bypass_getsockopt(int level,
2366                                                          int optname));
2367
2368 int do_sock_getsockopt(struct socket *sock, bool compat, int level,
2369                        int optname, sockptr_t optval, sockptr_t optlen)
2370 {
2371         int max_optlen __maybe_unused = 0;
2372         const struct proto_ops *ops;
2373         int err;
2374
2375         err = security_socket_getsockopt(sock, level, optname);
2376         if (err)
2377                 return err;
2378
2379         if (!compat)
2380                 copy_from_sockptr(&max_optlen, optlen, sizeof(int));
2381
2382         ops = READ_ONCE(sock->ops);
2383         if (level == SOL_SOCKET) {
2384                 err = sk_getsockopt(sock->sk, level, optname, optval, optlen);
2385         } else if (unlikely(!ops->getsockopt)) {
2386                 err = -EOPNOTSUPP;
2387         } else {
2388                 if (WARN_ONCE(optval.is_kernel || optlen.is_kernel,
2389                               "Invalid argument type"))
2390                         return -EOPNOTSUPP;
2391
2392                 err = ops->getsockopt(sock, level, optname, optval.user,
2393                                       optlen.user);
2394         }
2395
2396         if (!compat)
2397                 err = BPF_CGROUP_RUN_PROG_GETSOCKOPT(sock->sk, level, optname,
2398                                                      optval, optlen, max_optlen,
2399                                                      err);
2400
2401         return err;
2402 }
2403 EXPORT_SYMBOL(do_sock_getsockopt);
2404
2405 /*
2406  *      Get a socket option. Because we don't know the option lengths we have
2407  *      to pass a user mode parameter for the protocols to sort out.
2408  */
2409 int __sys_getsockopt(int fd, int level, int optname, char __user *optval,
2410                 int __user *optlen)
2411 {
2412         int err, fput_needed;
2413         struct socket *sock;
2414         bool compat;
2415
2416         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2417         if (!sock)
2418                 return err;
2419
2420         compat = in_compat_syscall();
2421         err = do_sock_getsockopt(sock, compat, level, optname,
2422                                  USER_SOCKPTR(optval), USER_SOCKPTR(optlen));
2423
2424         fput_light(sock->file, fput_needed);
2425         return err;
2426 }
2427
2428 SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname,
2429                 char __user *, optval, int __user *, optlen)
2430 {
2431         return __sys_getsockopt(fd, level, optname, optval, optlen);
2432 }
2433
2434 /*
2435  *      Shutdown a socket.
2436  */
2437
2438 int __sys_shutdown_sock(struct socket *sock, int how)
2439 {
2440         int err;
2441
2442         err = security_socket_shutdown(sock, how);
2443         if (!err)
2444                 err = READ_ONCE(sock->ops)->shutdown(sock, how);
2445
2446         return err;
2447 }
2448
2449 int __sys_shutdown(int fd, int how)
2450 {
2451         int err, fput_needed;
2452         struct socket *sock;
2453
2454         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2455         if (sock != NULL) {
2456                 err = __sys_shutdown_sock(sock, how);
2457                 fput_light(sock->file, fput_needed);
2458         }
2459         return err;
2460 }
2461
2462 SYSCALL_DEFINE2(shutdown, int, fd, int, how)
2463 {
2464         return __sys_shutdown(fd, how);
2465 }
2466
2467 /* A couple of helpful macros for getting the address of the 32/64 bit
2468  * fields which are the same type (int / unsigned) on our platforms.
2469  */
2470 #define COMPAT_MSG(msg, member) ((MSG_CMSG_COMPAT & flags) ? &msg##_compat->member : &msg->member)
2471 #define COMPAT_NAMELEN(msg)     COMPAT_MSG(msg, msg_namelen)
2472 #define COMPAT_FLAGS(msg)       COMPAT_MSG(msg, msg_flags)
2473
2474 struct used_address {
2475         struct sockaddr_storage name;
2476         unsigned int name_len;
2477 };
2478
2479 int __copy_msghdr(struct msghdr *kmsg,
2480                   struct user_msghdr *msg,
2481                   struct sockaddr __user **save_addr)
2482 {
2483         ssize_t err;
2484
2485         kmsg->msg_control_is_user = true;
2486         kmsg->msg_get_inq = 0;
2487         kmsg->msg_control_user = msg->msg_control;
2488         kmsg->msg_controllen = msg->msg_controllen;
2489         kmsg->msg_flags = msg->msg_flags;
2490
2491         kmsg->msg_namelen = msg->msg_namelen;
2492         if (!msg->msg_name)
2493                 kmsg->msg_namelen = 0;
2494
2495         if (kmsg->msg_namelen < 0)
2496                 return -EINVAL;
2497
2498         if (kmsg->msg_namelen > sizeof(struct sockaddr_storage))
2499                 kmsg->msg_namelen = sizeof(struct sockaddr_storage);
2500
2501         if (save_addr)
2502                 *save_addr = msg->msg_name;
2503
2504         if (msg->msg_name && kmsg->msg_namelen) {
2505                 if (!save_addr) {
2506                         err = move_addr_to_kernel(msg->msg_name,
2507                                                   kmsg->msg_namelen,
2508                                                   kmsg->msg_name);
2509                         if (err < 0)
2510                                 return err;
2511                 }
2512         } else {
2513                 kmsg->msg_name = NULL;
2514                 kmsg->msg_namelen = 0;
2515         }
2516
2517         if (msg->msg_iovlen > UIO_MAXIOV)
2518                 return -EMSGSIZE;
2519
2520         kmsg->msg_iocb = NULL;
2521         kmsg->msg_ubuf = NULL;
2522         return 0;
2523 }
2524
2525 static int copy_msghdr_from_user(struct msghdr *kmsg,
2526                                  struct user_msghdr __user *umsg,
2527                                  struct sockaddr __user **save_addr,
2528                                  struct iovec **iov)
2529 {
2530         struct user_msghdr msg;
2531         ssize_t err;
2532
2533         if (copy_from_user(&msg, umsg, sizeof(*umsg)))
2534                 return -EFAULT;
2535
2536         err = __copy_msghdr(kmsg, &msg, save_addr);
2537         if (err)
2538                 return err;
2539
2540         err = import_iovec(save_addr ? ITER_DEST : ITER_SOURCE,
2541                             msg.msg_iov, msg.msg_iovlen,
2542                             UIO_FASTIOV, iov, &kmsg->msg_iter);
2543         return err < 0 ? err : 0;
2544 }
2545
2546 static int ____sys_sendmsg(struct socket *sock, struct msghdr *msg_sys,
2547                            unsigned int flags, struct used_address *used_address,
2548                            unsigned int allowed_msghdr_flags)
2549 {
2550         unsigned char ctl[sizeof(struct cmsghdr) + 20]
2551                                 __aligned(sizeof(__kernel_size_t));
2552         /* 20 is size of ipv6_pktinfo */
2553         unsigned char *ctl_buf = ctl;
2554         int ctl_len;
2555         ssize_t err;
2556
2557         err = -ENOBUFS;
2558
2559         if (msg_sys->msg_controllen > INT_MAX)
2560                 goto out;
2561         flags |= (msg_sys->msg_flags & allowed_msghdr_flags);
2562         ctl_len = msg_sys->msg_controllen;
2563         if ((MSG_CMSG_COMPAT & flags) && ctl_len) {
2564                 err =
2565                     cmsghdr_from_user_compat_to_kern(msg_sys, sock->sk, ctl,
2566                                                      sizeof(ctl));
2567                 if (err)
2568                         goto out;
2569                 ctl_buf = msg_sys->msg_control;
2570                 ctl_len = msg_sys->msg_controllen;
2571         } else if (ctl_len) {
2572                 BUILD_BUG_ON(sizeof(struct cmsghdr) !=
2573                              CMSG_ALIGN(sizeof(struct cmsghdr)));
2574                 if (ctl_len > sizeof(ctl)) {
2575                         ctl_buf = sock_kmalloc(sock->sk, ctl_len, GFP_KERNEL);
2576                         if (ctl_buf == NULL)
2577                                 goto out;
2578                 }
2579                 err = -EFAULT;
2580                 if (copy_from_user(ctl_buf, msg_sys->msg_control_user, ctl_len))
2581                         goto out_freectl;
2582                 msg_sys->msg_control = ctl_buf;
2583                 msg_sys->msg_control_is_user = false;
2584         }
2585         flags &= ~MSG_INTERNAL_SENDMSG_FLAGS;
2586         msg_sys->msg_flags = flags;
2587
2588         if (sock->file->f_flags & O_NONBLOCK)
2589                 msg_sys->msg_flags |= MSG_DONTWAIT;
2590         /*
2591          * If this is sendmmsg() and current destination address is same as
2592          * previously succeeded address, omit asking LSM's decision.
2593          * used_address->name_len is initialized to UINT_MAX so that the first
2594          * destination address never matches.
2595          */
2596         if (used_address && msg_sys->msg_name &&
2597             used_address->name_len == msg_sys->msg_namelen &&
2598             !memcmp(&used_address->name, msg_sys->msg_name,
2599                     used_address->name_len)) {
2600                 err = sock_sendmsg_nosec(sock, msg_sys);
2601                 goto out_freectl;
2602         }
2603         err = __sock_sendmsg(sock, msg_sys);
2604         /*
2605          * If this is sendmmsg() and sending to current destination address was
2606          * successful, remember it.
2607          */
2608         if (used_address && err >= 0) {
2609                 used_address->name_len = msg_sys->msg_namelen;
2610                 if (msg_sys->msg_name)
2611                         memcpy(&used_address->name, msg_sys->msg_name,
2612                                used_address->name_len);
2613         }
2614
2615 out_freectl:
2616         if (ctl_buf != ctl)
2617                 sock_kfree_s(sock->sk, ctl_buf, ctl_len);
2618 out:
2619         return err;
2620 }
2621
2622 static int sendmsg_copy_msghdr(struct msghdr *msg,
2623                                struct user_msghdr __user *umsg, unsigned flags,
2624                                struct iovec **iov)
2625 {
2626         int err;
2627
2628         if (flags & MSG_CMSG_COMPAT) {
2629                 struct compat_msghdr __user *msg_compat;
2630
2631                 msg_compat = (struct compat_msghdr __user *) umsg;
2632                 err = get_compat_msghdr(msg, msg_compat, NULL, iov);
2633         } else {
2634                 err = copy_msghdr_from_user(msg, umsg, NULL, iov);
2635         }
2636         if (err < 0)
2637                 return err;
2638
2639         return 0;
2640 }
2641
2642 static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg,
2643                          struct msghdr *msg_sys, unsigned int flags,
2644                          struct used_address *used_address,
2645                          unsigned int allowed_msghdr_flags)
2646 {
2647         struct sockaddr_storage address;
2648         struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
2649         ssize_t err;
2650
2651         msg_sys->msg_name = &address;
2652
2653         err = sendmsg_copy_msghdr(msg_sys, msg, flags, &iov);
2654         if (err < 0)
2655                 return err;
2656
2657         err = ____sys_sendmsg(sock, msg_sys, flags, used_address,
2658                                 allowed_msghdr_flags);
2659         kfree(iov);
2660         return err;
2661 }
2662
2663 /*
2664  *      BSD sendmsg interface
2665  */
2666 long __sys_sendmsg_sock(struct socket *sock, struct msghdr *msg,
2667                         unsigned int flags)
2668 {
2669         return ____sys_sendmsg(sock, msg, flags, NULL, 0);
2670 }
2671
2672 long __sys_sendmsg(int fd, struct user_msghdr __user *msg, unsigned int flags,
2673                    bool forbid_cmsg_compat)
2674 {
2675         int fput_needed, err;
2676         struct msghdr msg_sys;
2677         struct socket *sock;
2678
2679         if (forbid_cmsg_compat && (flags & MSG_CMSG_COMPAT))
2680                 return -EINVAL;
2681
2682         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2683         if (!sock)
2684                 goto out;
2685
2686         err = ___sys_sendmsg(sock, msg, &msg_sys, flags, NULL, 0);
2687
2688         fput_light(sock->file, fput_needed);
2689 out:
2690         return err;
2691 }
2692
2693 SYSCALL_DEFINE3(sendmsg, int, fd, struct user_msghdr __user *, msg, unsigned int, flags)
2694 {
2695         return __sys_sendmsg(fd, msg, flags, true);
2696 }
2697
2698 /*
2699  *      Linux sendmmsg interface
2700  */
2701
2702 int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen,
2703                    unsigned int flags, bool forbid_cmsg_compat)
2704 {
2705         int fput_needed, err, datagrams;
2706         struct socket *sock;
2707         struct mmsghdr __user *entry;
2708         struct compat_mmsghdr __user *compat_entry;
2709         struct msghdr msg_sys;
2710         struct used_address used_address;
2711         unsigned int oflags = flags;
2712
2713         if (forbid_cmsg_compat && (flags & MSG_CMSG_COMPAT))
2714                 return -EINVAL;
2715
2716         if (vlen > UIO_MAXIOV)
2717                 vlen = UIO_MAXIOV;
2718
2719         datagrams = 0;
2720
2721         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2722         if (!sock)
2723                 return err;
2724
2725         used_address.name_len = UINT_MAX;
2726         entry = mmsg;
2727         compat_entry = (struct compat_mmsghdr __user *)mmsg;
2728         err = 0;
2729         flags |= MSG_BATCH;
2730
2731         while (datagrams < vlen) {
2732                 if (datagrams == vlen - 1)
2733                         flags = oflags;
2734
2735                 if (MSG_CMSG_COMPAT & flags) {
2736                         err = ___sys_sendmsg(sock, (struct user_msghdr __user *)compat_entry,
2737                                              &msg_sys, flags, &used_address, MSG_EOR);
2738                         if (err < 0)
2739                                 break;
2740                         err = __put_user(err, &compat_entry->msg_len);
2741                         ++compat_entry;
2742                 } else {
2743                         err = ___sys_sendmsg(sock,
2744                                              (struct user_msghdr __user *)entry,
2745                                              &msg_sys, flags, &used_address, MSG_EOR);
2746                         if (err < 0)
2747                                 break;
2748                         err = put_user(err, &entry->msg_len);
2749                         ++entry;
2750                 }
2751
2752                 if (err)
2753                         break;
2754                 ++datagrams;
2755                 if (msg_data_left(&msg_sys))
2756                         break;
2757                 cond_resched();
2758         }
2759
2760         fput_light(sock->file, fput_needed);
2761
2762         /* We only return an error if no datagrams were able to be sent */
2763         if (datagrams != 0)
2764                 return datagrams;
2765
2766         return err;
2767 }
2768
2769 SYSCALL_DEFINE4(sendmmsg, int, fd, struct mmsghdr __user *, mmsg,
2770                 unsigned int, vlen, unsigned int, flags)
2771 {
2772         return __sys_sendmmsg(fd, mmsg, vlen, flags, true);
2773 }
2774
2775 static int recvmsg_copy_msghdr(struct msghdr *msg,
2776                                struct user_msghdr __user *umsg, unsigned flags,
2777                                struct sockaddr __user **uaddr,
2778                                struct iovec **iov)
2779 {
2780         ssize_t err;
2781
2782         if (MSG_CMSG_COMPAT & flags) {
2783                 struct compat_msghdr __user *msg_compat;
2784
2785                 msg_compat = (struct compat_msghdr __user *) umsg;
2786                 err = get_compat_msghdr(msg, msg_compat, uaddr, iov);
2787         } else {
2788                 err = copy_msghdr_from_user(msg, umsg, uaddr, iov);
2789         }
2790         if (err < 0)
2791                 return err;
2792
2793         return 0;
2794 }
2795
2796 static int ____sys_recvmsg(struct socket *sock, struct msghdr *msg_sys,
2797                            struct user_msghdr __user *msg,
2798                            struct sockaddr __user *uaddr,
2799                            unsigned int flags, int nosec)
2800 {
2801         struct compat_msghdr __user *msg_compat =
2802                                         (struct compat_msghdr __user *) msg;
2803         int __user *uaddr_len = COMPAT_NAMELEN(msg);
2804         struct sockaddr_storage addr;
2805         unsigned long cmsg_ptr;
2806         int len;
2807         ssize_t err;
2808
2809         msg_sys->msg_name = &addr;
2810         cmsg_ptr = (unsigned long)msg_sys->msg_control;
2811         msg_sys->msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT);
2812
2813         /* We assume all kernel code knows the size of sockaddr_storage */
2814         msg_sys->msg_namelen = 0;
2815
2816         if (sock->file->f_flags & O_NONBLOCK)
2817                 flags |= MSG_DONTWAIT;
2818
2819         if (unlikely(nosec))
2820                 err = sock_recvmsg_nosec(sock, msg_sys, flags);
2821         else
2822                 err = sock_recvmsg(sock, msg_sys, flags);
2823
2824         if (err < 0)
2825                 goto out;
2826         len = err;
2827
2828         if (uaddr != NULL) {
2829                 err = move_addr_to_user(&addr,
2830                                         msg_sys->msg_namelen, uaddr,
2831                                         uaddr_len);
2832                 if (err < 0)
2833                         goto out;
2834         }
2835         err = __put_user((msg_sys->msg_flags & ~MSG_CMSG_COMPAT),
2836                          COMPAT_FLAGS(msg));
2837         if (err)
2838                 goto out;
2839         if (MSG_CMSG_COMPAT & flags)
2840                 err = __put_user((unsigned long)msg_sys->msg_control - cmsg_ptr,
2841                                  &msg_compat->msg_controllen);
2842         else
2843                 err = __put_user((unsigned long)msg_sys->msg_control - cmsg_ptr,
2844                                  &msg->msg_controllen);
2845         if (err)
2846                 goto out;
2847         err = len;
2848 out:
2849         return err;
2850 }
2851
2852 static int ___sys_recvmsg(struct socket *sock, struct user_msghdr __user *msg,
2853                          struct msghdr *msg_sys, unsigned int flags, int nosec)
2854 {
2855         struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
2856         /* user mode address pointers */
2857         struct sockaddr __user *uaddr;
2858         ssize_t err;
2859
2860         err = recvmsg_copy_msghdr(msg_sys, msg, flags, &uaddr, &iov);
2861         if (err < 0)
2862                 return err;
2863
2864         err = ____sys_recvmsg(sock, msg_sys, msg, uaddr, flags, nosec);
2865         kfree(iov);
2866         return err;
2867 }
2868
2869 /*
2870  *      BSD recvmsg interface
2871  */
2872
2873 long __sys_recvmsg_sock(struct socket *sock, struct msghdr *msg,
2874                         struct user_msghdr __user *umsg,
2875                         struct sockaddr __user *uaddr, unsigned int flags)
2876 {
2877         return ____sys_recvmsg(sock, msg, umsg, uaddr, flags, 0);
2878 }
2879
2880 long __sys_recvmsg(int fd, struct user_msghdr __user *msg, unsigned int flags,
2881                    bool forbid_cmsg_compat)
2882 {
2883         int fput_needed, err;
2884         struct msghdr msg_sys;
2885         struct socket *sock;
2886
2887         if (forbid_cmsg_compat && (flags & MSG_CMSG_COMPAT))
2888                 return -EINVAL;
2889
2890         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2891         if (!sock)
2892                 goto out;
2893
2894         err = ___sys_recvmsg(sock, msg, &msg_sys, flags, 0);
2895
2896         fput_light(sock->file, fput_needed);
2897 out:
2898         return err;
2899 }
2900
2901 SYSCALL_DEFINE3(recvmsg, int, fd, struct user_msghdr __user *, msg,
2902                 unsigned int, flags)
2903 {
2904         return __sys_recvmsg(fd, msg, flags, true);
2905 }
2906
2907 /*
2908  *     Linux recvmmsg interface
2909  */
2910
2911 static int do_recvmmsg(int fd, struct mmsghdr __user *mmsg,
2912                           unsigned int vlen, unsigned int flags,
2913                           struct timespec64 *timeout)
2914 {
2915         int fput_needed, err, datagrams;
2916         struct socket *sock;
2917         struct mmsghdr __user *entry;
2918         struct compat_mmsghdr __user *compat_entry;
2919         struct msghdr msg_sys;
2920         struct timespec64 end_time;
2921         struct timespec64 timeout64;
2922
2923         if (timeout &&
2924             poll_select_set_timeout(&end_time, timeout->tv_sec,
2925                                     timeout->tv_nsec))
2926                 return -EINVAL;
2927
2928         datagrams = 0;
2929
2930         sock = sockfd_lookup_light(fd, &err, &fput_needed);
2931         if (!sock)
2932                 return err;
2933
2934         if (likely(!(flags & MSG_ERRQUEUE))) {
2935                 err = sock_error(sock->sk);
2936                 if (err) {
2937                         datagrams = err;
2938                         goto out_put;
2939                 }
2940         }
2941
2942         entry = mmsg;
2943         compat_entry = (struct compat_mmsghdr __user *)mmsg;
2944
2945         while (datagrams < vlen) {
2946                 /*
2947                  * No need to ask LSM for more than the first datagram.
2948                  */
2949                 if (MSG_CMSG_COMPAT & flags) {
2950                         err = ___sys_recvmsg(sock, (struct user_msghdr __user *)compat_entry,
2951                                              &msg_sys, flags & ~MSG_WAITFORONE,
2952                                              datagrams);
2953                         if (err < 0)
2954                                 break;
2955                         err = __put_user(err, &compat_entry->msg_len);
2956                         ++compat_entry;
2957                 } else {
2958                         err = ___sys_recvmsg(sock,
2959                                              (struct user_msghdr __user *)entry,
2960                                              &msg_sys, flags & ~MSG_WAITFORONE,
2961                                              datagrams);
2962                         if (err < 0)
2963                                 break;
2964                         err = put_user(err, &entry->msg_len);
2965                         ++entry;
2966                 }
2967
2968                 if (err)
2969                         break;
2970                 ++datagrams;
2971
2972                 /* MSG_WAITFORONE turns on MSG_DONTWAIT after one packet */
2973                 if (flags & MSG_WAITFORONE)
2974                         flags |= MSG_DONTWAIT;
2975
2976                 if (timeout) {
2977                         ktime_get_ts64(&timeout64);
2978                         *timeout = timespec64_sub(end_time, timeout64);
2979                         if (timeout->tv_sec < 0) {
2980                                 timeout->tv_sec = timeout->tv_nsec = 0;
2981                                 break;
2982                         }
2983
2984                         /* Timeout, return less than vlen datagrams */
2985                         if (timeout->tv_nsec == 0 && timeout->tv_sec == 0)
2986                                 break;
2987                 }
2988
2989                 /* Out of band data, return right away */
2990                 if (msg_sys.msg_flags & MSG_OOB)
2991                         break;
2992                 cond_resched();
2993         }
2994
2995         if (err == 0)
2996                 goto out_put;
2997
2998         if (datagrams == 0) {
2999                 datagrams = err;
3000                 goto out_put;
3001         }
3002
3003         /*
3004          * We may return less entries than requested (vlen) if the
3005          * sock is non block and there aren't enough datagrams...
3006          */
3007         if (err != -EAGAIN) {
3008                 /*
3009                  * ... or  if recvmsg returns an error after we
3010                  * received some datagrams, where we record the
3011                  * error to return on the next call or if the
3012                  * app asks about it using getsockopt(SO_ERROR).
3013                  */
3014                 WRITE_ONCE(sock->sk->sk_err, -err);
3015         }
3016 out_put:
3017         fput_light(sock->file, fput_needed);
3018
3019         return datagrams;
3020 }
3021
3022 int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg,
3023                    unsigned int vlen, unsigned int flags,
3024                    struct __kernel_timespec __user *timeout,
3025                    struct old_timespec32 __user *timeout32)
3026 {
3027         int datagrams;
3028         struct timespec64 timeout_sys;
3029
3030         if (timeout && get_timespec64(&timeout_sys, timeout))
3031                 return -EFAULT;
3032
3033         if (timeout32 && get_old_timespec32(&timeout_sys, timeout32))
3034                 return -EFAULT;
3035
3036         if (!timeout && !timeout32)
3037                 return do_recvmmsg(fd, mmsg, vlen, flags, NULL);
3038
3039         datagrams = do_recvmmsg(fd, mmsg, vlen, flags, &timeout_sys);
3040
3041         if (datagrams <= 0)
3042                 return datagrams;
3043
3044         if (timeout && put_timespec64(&timeout_sys, timeout))
3045                 datagrams = -EFAULT;
3046
3047         if (timeout32 && put_old_timespec32(&timeout_sys, timeout32))
3048                 datagrams = -EFAULT;
3049
3050         return datagrams;
3051 }
3052
3053 SYSCALL_DEFINE5(recvmmsg, int, fd, struct mmsghdr __user *, mmsg,
3054                 unsigned int, vlen, unsigned int, flags,
3055                 struct __kernel_timespec __user *, timeout)
3056 {
3057         if (flags & MSG_CMSG_COMPAT)
3058                 return -EINVAL;
3059
3060         return __sys_recvmmsg(fd, mmsg, vlen, flags, timeout, NULL);
3061 }
3062
3063 #ifdef CONFIG_COMPAT_32BIT_TIME
3064 SYSCALL_DEFINE5(recvmmsg_time32, int, fd, struct mmsghdr __user *, mmsg,
3065                 unsigned int, vlen, unsigned int, flags,
3066                 struct old_timespec32 __user *, timeout)
3067 {
3068         if (flags & MSG_CMSG_COMPAT)
3069                 return -EINVAL;
3070
3071         return __sys_recvmmsg(fd, mmsg, vlen, flags, NULL, timeout);
3072 }
3073 #endif
3074
3075 #ifdef __ARCH_WANT_SYS_SOCKETCALL
3076 /* Argument list sizes for sys_socketcall */
3077 #define AL(x) ((x) * sizeof(unsigned long))
3078 static const unsigned char nargs[21] = {
3079         AL(0), AL(3), AL(3), AL(3), AL(2), AL(3),
3080         AL(3), AL(3), AL(4), AL(4), AL(4), AL(6),
3081         AL(6), AL(2), AL(5), AL(5), AL(3), AL(3),
3082         AL(4), AL(5), AL(4)
3083 };
3084
3085 #undef AL
3086
3087 /*
3088  *      System call vectors.
3089  *
3090  *      Argument checking cleaned up. Saved 20% in size.
3091  *  This function doesn't need to set the kernel lock because
3092  *  it is set by the callees.
3093  */
3094
3095 SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)
3096 {
3097         unsigned long a[AUDITSC_ARGS];
3098         unsigned long a0, a1;
3099         int err;
3100         unsigned int len;
3101
3102         if (call < 1 || call > SYS_SENDMMSG)
3103                 return -EINVAL;
3104         call = array_index_nospec(call, SYS_SENDMMSG + 1);
3105
3106         len = nargs[call];
3107         if (len > sizeof(a))
3108                 return -EINVAL;
3109
3110         /* copy_from_user should be SMP safe. */
3111         if (copy_from_user(a, args, len))
3112                 return -EFAULT;
3113
3114         err = audit_socketcall(nargs[call] / sizeof(unsigned long), a);
3115         if (err)
3116                 return err;
3117
3118         a0 = a[0];
3119         a1 = a[1];
3120
3121         switch (call) {
3122         case SYS_SOCKET:
3123                 err = __sys_socket(a0, a1, a[2]);
3124                 break;
3125         case SYS_BIND:
3126                 err = __sys_bind(a0, (struct sockaddr __user *)a1, a[2]);
3127                 break;
3128         case SYS_CONNECT:
3129                 err = __sys_connect(a0, (struct sockaddr __user *)a1, a[2]);
3130                 break;
3131         case SYS_LISTEN:
3132                 err = __sys_listen(a0, a1);
3133                 break;
3134         case SYS_ACCEPT:
3135                 err = __sys_accept4(a0, (struct sockaddr __user *)a1,
3136                                     (int __user *)a[2], 0);
3137                 break;
3138         case SYS_GETSOCKNAME:
3139                 err =
3140                     __sys_getsockname(a0, (struct sockaddr __user *)a1,
3141                                       (int __user *)a[2]);
3142                 break;
3143         case SYS_GETPEERNAME:
3144                 err =
3145                     __sys_getpeername(a0, (struct sockaddr __user *)a1,
3146                                       (int __user *)a[2]);
3147                 break;
3148         case SYS_SOCKETPAIR:
3149                 err = __sys_socketpair(a0, a1, a[2], (int __user *)a[3]);
3150                 break;
3151         case SYS_SEND:
3152                 err = __sys_sendto(a0, (void __user *)a1, a[2], a[3],
3153                                    NULL, 0);
3154                 break;
3155         case SYS_SENDTO:
3156                 err = __sys_sendto(a0, (void __user *)a1, a[2], a[3],
3157                                    (struct sockaddr __user *)a[4], a[5]);
3158                 break;
3159         case SYS_RECV:
3160                 err = __sys_recvfrom(a0, (void __user *)a1, a[2], a[3],
3161                                      NULL, NULL);
3162                 break;
3163         case SYS_RECVFROM:
3164                 err = __sys_recvfrom(a0, (void __user *)a1, a[2], a[3],
3165                                      (struct sockaddr __user *)a[4],
3166                                      (int __user *)a[5]);
3167                 break;
3168         case SYS_SHUTDOWN:
3169                 err = __sys_shutdown(a0, a1);
3170                 break;
3171         case SYS_SETSOCKOPT:
3172                 err = __sys_setsockopt(a0, a1, a[2], (char __user *)a[3],
3173                                        a[4]);
3174                 break;
3175         case SYS_GETSOCKOPT:
3176                 err =
3177                     __sys_getsockopt(a0, a1, a[2], (char __user *)a[3],
3178                                      (int __user *)a[4]);
3179                 break;
3180         case SYS_SENDMSG:
3181                 err = __sys_sendmsg(a0, (struct user_msghdr __user *)a1,
3182                                     a[2], true);
3183                 break;
3184         case SYS_SENDMMSG:
3185                 err = __sys_sendmmsg(a0, (struct mmsghdr __user *)a1, a[2],
3186                                      a[3], true);
3187                 break;
3188         case SYS_RECVMSG:
3189                 err = __sys_recvmsg(a0, (struct user_msghdr __user *)a1,
3190                                     a[2], true);
3191                 break;
3192         case SYS_RECVMMSG:
3193                 if (IS_ENABLED(CONFIG_64BIT))
3194                         err = __sys_recvmmsg(a0, (struct mmsghdr __user *)a1,
3195                                              a[2], a[3],
3196                                              (struct __kernel_timespec __user *)a[4],
3197                                              NULL);
3198                 else
3199                         err = __sys_recvmmsg(a0, (struct mmsghdr __user *)a1,
3200                                              a[2], a[3], NULL,
3201                                              (struct old_timespec32 __user *)a[4]);
3202                 break;
3203         case SYS_ACCEPT4:
3204                 err = __sys_accept4(a0, (struct sockaddr __user *)a1,
3205                                     (int __user *)a[2], a[3]);
3206                 break;
3207         default:
3208                 err = -EINVAL;
3209                 break;
3210         }
3211         return err;
3212 }
3213
3214 #endif                          /* __ARCH_WANT_SYS_SOCKETCALL */
3215
3216 /**
3217  *      sock_register - add a socket protocol handler
3218  *      @ops: description of protocol
3219  *
3220  *      This function is called by a protocol handler that wants to
3221  *      advertise its address family, and have it linked into the
3222  *      socket interface. The value ops->family corresponds to the
3223  *      socket system call protocol family.
3224  */
3225 int sock_register(const struct net_proto_family *ops)
3226 {
3227         int err;
3228
3229         if (ops->family >= NPROTO) {
3230                 pr_crit("protocol %d >= NPROTO(%d)\n", ops->family, NPROTO);
3231                 return -ENOBUFS;
3232         }
3233
3234         spin_lock(&net_family_lock);
3235         if (rcu_dereference_protected(net_families[ops->family],
3236                                       lockdep_is_held(&net_family_lock)))
3237                 err = -EEXIST;
3238         else {
3239                 rcu_assign_pointer(net_families[ops->family], ops);
3240                 err = 0;
3241         }
3242         spin_unlock(&net_family_lock);
3243
3244         pr_info("NET: Registered %s protocol family\n", pf_family_names[ops->family]);
3245         return err;
3246 }
3247 EXPORT_SYMBOL(sock_register);
3248
3249 /**
3250  *      sock_unregister - remove a protocol handler
3251  *      @family: protocol family to remove
3252  *
3253  *      This function is called by a protocol handler that wants to
3254  *      remove its address family, and have it unlinked from the
3255  *      new socket creation.
3256  *
3257  *      If protocol handler is a module, then it can use module reference
3258  *      counts to protect against new references. If protocol handler is not
3259  *      a module then it needs to provide its own protection in
3260  *      the ops->create routine.
3261  */
3262 void sock_unregister(int family)
3263 {
3264         BUG_ON(family < 0 || family >= NPROTO);
3265
3266         spin_lock(&net_family_lock);
3267         RCU_INIT_POINTER(net_families[family], NULL);
3268         spin_unlock(&net_family_lock);
3269
3270         synchronize_rcu();
3271
3272         pr_info("NET: Unregistered %s protocol family\n", pf_family_names[family]);
3273 }
3274 EXPORT_SYMBOL(sock_unregister);
3275
3276 bool sock_is_registered(int family)
3277 {
3278         return family < NPROTO && rcu_access_pointer(net_families[family]);
3279 }
3280
3281 static int __init sock_init(void)
3282 {
3283         int err;
3284         /*
3285          *      Initialize the network sysctl infrastructure.
3286          */
3287         err = net_sysctl_init();
3288         if (err)
3289                 goto out;
3290
3291         /*
3292          *      Initialize skbuff SLAB cache
3293          */
3294         skb_init();
3295
3296         /*
3297          *      Initialize the protocols module.
3298          */
3299
3300         init_inodecache();
3301
3302         err = register_filesystem(&sock_fs_type);
3303         if (err)
3304                 goto out;
3305         sock_mnt = kern_mount(&sock_fs_type);
3306         if (IS_ERR(sock_mnt)) {
3307                 err = PTR_ERR(sock_mnt);
3308                 goto out_mount;
3309         }
3310
3311         /* The real protocol initialization is performed in later initcalls.
3312          */
3313
3314 #ifdef CONFIG_NETFILTER
3315         err = netfilter_init();
3316         if (err)
3317                 goto out;
3318 #endif
3319
3320         ptp_classifier_init();
3321
3322 out:
3323         return err;
3324
3325 out_mount:
3326         unregister_filesystem(&sock_fs_type);
3327         goto out;
3328 }
3329
3330 core_initcall(sock_init);       /* early initcall */
3331
3332 #ifdef CONFIG_PROC_FS
3333 void socket_seq_show(struct seq_file *seq)
3334 {
3335         seq_printf(seq, "sockets: used %d\n",
3336                    sock_inuse_get(seq->private));
3337 }
3338 #endif                          /* CONFIG_PROC_FS */
3339
3340 /* Handle the fact that while struct ifreq has the same *layout* on
3341  * 32/64 for everything but ifreq::ifru_ifmap and ifreq::ifru_data,
3342  * which are handled elsewhere, it still has different *size* due to
3343  * ifreq::ifru_ifmap (which is 16 bytes on 32 bit, 24 bytes on 64-bit,
3344  * resulting in struct ifreq being 32 and 40 bytes respectively).
3345  * As a result, if the struct happens to be at the end of a page and
3346  * the next page isn't readable/writable, we get a fault. To prevent
3347  * that, copy back and forth to the full size.
3348  */
3349 int get_user_ifreq(struct ifreq *ifr, void __user **ifrdata, void __user *arg)
3350 {
3351         if (in_compat_syscall()) {
3352                 struct compat_ifreq *ifr32 = (struct compat_ifreq *)ifr;
3353
3354                 memset(ifr, 0, sizeof(*ifr));
3355                 if (copy_from_user(ifr32, arg, sizeof(*ifr32)))
3356                         return -EFAULT;
3357
3358                 if (ifrdata)
3359                         *ifrdata = compat_ptr(ifr32->ifr_data);
3360
3361                 return 0;
3362         }
3363
3364         if (copy_from_user(ifr, arg, sizeof(*ifr)))
3365                 return -EFAULT;
3366
3367         if (ifrdata)
3368                 *ifrdata = ifr->ifr_data;
3369
3370         return 0;
3371 }
3372 EXPORT_SYMBOL(get_user_ifreq);
3373
3374 int put_user_ifreq(struct ifreq *ifr, void __user *arg)
3375 {
3376         size_t size = sizeof(*ifr);
3377
3378         if (in_compat_syscall())
3379                 size = sizeof(struct compat_ifreq);
3380
3381         if (copy_to_user(arg, ifr, size))
3382                 return -EFAULT;
3383
3384         return 0;
3385 }
3386 EXPORT_SYMBOL(put_user_ifreq);
3387
3388 #ifdef CONFIG_COMPAT
3389 static int compat_siocwandev(struct net *net, struct compat_ifreq __user *uifr32)
3390 {
3391         compat_uptr_t uptr32;
3392         struct ifreq ifr;
3393         void __user *saved;
3394         int err;
3395
3396         if (get_user_ifreq(&ifr, NULL, uifr32))
3397                 return -EFAULT;
3398
3399         if (get_user(uptr32, &uifr32->ifr_settings.ifs_ifsu))
3400                 return -EFAULT;
3401
3402         saved = ifr.ifr_settings.ifs_ifsu.raw_hdlc;
3403         ifr.ifr_settings.ifs_ifsu.raw_hdlc = compat_ptr(uptr32);
3404
3405         err = dev_ioctl(net, SIOCWANDEV, &ifr, NULL, NULL);
3406         if (!err) {
3407                 ifr.ifr_settings.ifs_ifsu.raw_hdlc = saved;
3408                 if (put_user_ifreq(&ifr, uifr32))
3409                         err = -EFAULT;
3410         }
3411         return err;
3412 }
3413
3414 /* Handle ioctls that use ifreq::ifr_data and just need struct ifreq converted */
3415 static int compat_ifr_data_ioctl(struct net *net, unsigned int cmd,
3416                                  struct compat_ifreq __user *u_ifreq32)
3417 {
3418         struct ifreq ifreq;
3419         void __user *data;
3420
3421         if (!is_socket_ioctl_cmd(cmd))
3422                 return -ENOTTY;
3423         if (get_user_ifreq(&ifreq, &data, u_ifreq32))
3424                 return -EFAULT;
3425         ifreq.ifr_data = data;
3426
3427         return dev_ioctl(net, cmd, &ifreq, data, NULL);
3428 }
3429
3430 static int compat_sock_ioctl_trans(struct file *file, struct socket *sock,
3431                          unsigned int cmd, unsigned long arg)
3432 {
3433         void __user *argp = compat_ptr(arg);
3434         struct sock *sk = sock->sk;
3435         struct net *net = sock_net(sk);
3436         const struct proto_ops *ops;
3437
3438         if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15))
3439                 return sock_ioctl(file, cmd, (unsigned long)argp);
3440
3441         switch (cmd) {
3442         case SIOCWANDEV:
3443                 return compat_siocwandev(net, argp);
3444         case SIOCGSTAMP_OLD:
3445         case SIOCGSTAMPNS_OLD:
3446                 ops = READ_ONCE(sock->ops);
3447                 if (!ops->gettstamp)
3448                         return -ENOIOCTLCMD;
3449                 return ops->gettstamp(sock, argp, cmd == SIOCGSTAMP_OLD,
3450                                       !COMPAT_USE_64BIT_TIME);
3451
3452         case SIOCETHTOOL:
3453         case SIOCBONDSLAVEINFOQUERY:
3454         case SIOCBONDINFOQUERY:
3455         case SIOCSHWTSTAMP:
3456         case SIOCGHWTSTAMP:
3457                 return compat_ifr_data_ioctl(net, cmd, argp);
3458
3459         case FIOSETOWN:
3460         case SIOCSPGRP:
3461         case FIOGETOWN:
3462         case SIOCGPGRP:
3463         case SIOCBRADDBR:
3464         case SIOCBRDELBR:
3465         case SIOCGIFVLAN:
3466         case SIOCSIFVLAN:
3467         case SIOCGSKNS:
3468         case SIOCGSTAMP_NEW:
3469         case SIOCGSTAMPNS_NEW:
3470         case SIOCGIFCONF:
3471         case SIOCSIFBR:
3472         case SIOCGIFBR:
3473                 return sock_ioctl(file, cmd, arg);
3474
3475         case SIOCGIFFLAGS:
3476         case SIOCSIFFLAGS:
3477         case SIOCGIFMAP:
3478         case SIOCSIFMAP:
3479         case SIOCGIFMETRIC:
3480         case SIOCSIFMETRIC:
3481         case SIOCGIFMTU:
3482         case SIOCSIFMTU:
3483         case SIOCGIFMEM:
3484         case SIOCSIFMEM:
3485         case SIOCGIFHWADDR:
3486         case SIOCSIFHWADDR:
3487         case SIOCADDMULTI:
3488         case SIOCDELMULTI:
3489         case SIOCGIFINDEX:
3490         case SIOCGIFADDR:
3491         case SIOCSIFADDR:
3492         case SIOCSIFHWBROADCAST:
3493         case SIOCDIFADDR:
3494         case SIOCGIFBRDADDR:
3495         case SIOCSIFBRDADDR:
3496         case SIOCGIFDSTADDR:
3497         case SIOCSIFDSTADDR:
3498         case SIOCGIFNETMASK:
3499         case SIOCSIFNETMASK:
3500         case SIOCSIFPFLAGS:
3501         case SIOCGIFPFLAGS:
3502         case SIOCGIFTXQLEN:
3503         case SIOCSIFTXQLEN:
3504         case SIOCBRADDIF:
3505         case SIOCBRDELIF:
3506         case SIOCGIFNAME:
3507         case SIOCSIFNAME:
3508         case SIOCGMIIPHY:
3509         case SIOCGMIIREG:
3510         case SIOCSMIIREG:
3511         case SIOCBONDENSLAVE:
3512         case SIOCBONDRELEASE:
3513         case SIOCBONDSETHWADDR:
3514         case SIOCBONDCHANGEACTIVE:
3515         case SIOCSARP:
3516         case SIOCGARP:
3517         case SIOCDARP:
3518         case SIOCOUTQ:
3519         case SIOCOUTQNSD:
3520         case SIOCATMARK:
3521                 return sock_do_ioctl(net, sock, cmd, arg);
3522         }
3523
3524         return -ENOIOCTLCMD;
3525 }
3526
3527 static long compat_sock_ioctl(struct file *file, unsigned int cmd,
3528                               unsigned long arg)
3529 {
3530         struct socket *sock = file->private_data;
3531         const struct proto_ops *ops = READ_ONCE(sock->ops);
3532         int ret = -ENOIOCTLCMD;
3533         struct sock *sk;
3534         struct net *net;
3535
3536         sk = sock->sk;
3537         net = sock_net(sk);
3538
3539         if (ops->compat_ioctl)
3540                 ret = ops->compat_ioctl(sock, cmd, arg);
3541
3542         if (ret == -ENOIOCTLCMD &&
3543             (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST))
3544                 ret = compat_wext_handle_ioctl(net, cmd, arg);
3545
3546         if (ret == -ENOIOCTLCMD)
3547                 ret = compat_sock_ioctl_trans(file, sock, cmd, arg);
3548
3549         return ret;
3550 }
3551 #endif
3552
3553 /**
3554  *      kernel_bind - bind an address to a socket (kernel space)
3555  *      @sock: socket
3556  *      @addr: address
3557  *      @addrlen: length of address
3558  *
3559  *      Returns 0 or an error.
3560  */
3561
3562 int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen)
3563 {
3564         struct sockaddr_storage address;
3565
3566         memcpy(&address, addr, addrlen);
3567
3568         return READ_ONCE(sock->ops)->bind(sock, (struct sockaddr *)&address,
3569                                           addrlen);
3570 }
3571 EXPORT_SYMBOL(kernel_bind);
3572
3573 /**
3574  *      kernel_listen - move socket to listening state (kernel space)
3575  *      @sock: socket
3576  *      @backlog: pending connections queue size
3577  *
3578  *      Returns 0 or an error.
3579  */
3580
3581 int kernel_listen(struct socket *sock, int backlog)
3582 {
3583         return READ_ONCE(sock->ops)->listen(sock, backlog);
3584 }
3585 EXPORT_SYMBOL(kernel_listen);
3586
3587 /**
3588  *      kernel_accept - accept a connection (kernel space)
3589  *      @sock: listening socket
3590  *      @newsock: new connected socket
3591  *      @flags: flags
3592  *
3593  *      @flags must be SOCK_CLOEXEC, SOCK_NONBLOCK or 0.
3594  *      If it fails, @newsock is guaranteed to be %NULL.
3595  *      Returns 0 or an error.
3596  */
3597
3598 int kernel_accept(struct socket *sock, struct socket **newsock, int flags)
3599 {
3600         struct sock *sk = sock->sk;
3601         const struct proto_ops *ops = READ_ONCE(sock->ops);
3602         struct proto_accept_arg arg = {
3603                 .flags = flags,
3604                 .kern = true,
3605         };
3606         int err;
3607
3608         err = sock_create_lite(sk->sk_family, sk->sk_type, sk->sk_protocol,
3609                                newsock);
3610         if (err < 0)
3611                 goto done;
3612
3613         err = ops->accept(sock, *newsock, &arg);
3614         if (err < 0) {
3615                 sock_release(*newsock);
3616                 *newsock = NULL;
3617                 goto done;
3618         }
3619
3620         (*newsock)->ops = ops;
3621         __module_get(ops->owner);
3622
3623 done:
3624         return err;
3625 }
3626 EXPORT_SYMBOL(kernel_accept);
3627
3628 /**
3629  *      kernel_connect - connect a socket (kernel space)
3630  *      @sock: socket
3631  *      @addr: address
3632  *      @addrlen: address length
3633  *      @flags: flags (O_NONBLOCK, ...)
3634  *
3635  *      For datagram sockets, @addr is the address to which datagrams are sent
3636  *      by default, and the only address from which datagrams are received.
3637  *      For stream sockets, attempts to connect to @addr.
3638  *      Returns 0 or an error code.
3639  */
3640
3641 int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
3642                    int flags)
3643 {
3644         struct sockaddr_storage address;
3645
3646         memcpy(&address, addr, addrlen);
3647
3648         return READ_ONCE(sock->ops)->connect(sock, (struct sockaddr *)&address,
3649                                              addrlen, flags);
3650 }
3651 EXPORT_SYMBOL(kernel_connect);
3652
3653 /**
3654  *      kernel_getsockname - get the address which the socket is bound (kernel space)
3655  *      @sock: socket
3656  *      @addr: address holder
3657  *
3658  *      Fills the @addr pointer with the address which the socket is bound.
3659  *      Returns the length of the address in bytes or an error code.
3660  */
3661
3662 int kernel_getsockname(struct socket *sock, struct sockaddr *addr)
3663 {
3664         return READ_ONCE(sock->ops)->getname(sock, addr, 0);
3665 }
3666 EXPORT_SYMBOL(kernel_getsockname);
3667
3668 /**
3669  *      kernel_getpeername - get the address which the socket is connected (kernel space)
3670  *      @sock: socket
3671  *      @addr: address holder
3672  *
3673  *      Fills the @addr pointer with the address which the socket is connected.
3674  *      Returns the length of the address in bytes or an error code.
3675  */
3676
3677 int kernel_getpeername(struct socket *sock, struct sockaddr *addr)
3678 {
3679         return READ_ONCE(sock->ops)->getname(sock, addr, 1);
3680 }
3681 EXPORT_SYMBOL(kernel_getpeername);
3682
3683 /**
3684  *      kernel_sock_shutdown - shut down part of a full-duplex connection (kernel space)
3685  *      @sock: socket
3686  *      @how: connection part
3687  *
3688  *      Returns 0 or an error.
3689  */
3690
3691 int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how)
3692 {
3693         return READ_ONCE(sock->ops)->shutdown(sock, how);
3694 }
3695 EXPORT_SYMBOL(kernel_sock_shutdown);
3696
3697 /**
3698  *      kernel_sock_ip_overhead - returns the IP overhead imposed by a socket
3699  *      @sk: socket
3700  *
3701  *      This routine returns the IP overhead imposed by a socket i.e.
3702  *      the length of the underlying IP header, depending on whether
3703  *      this is an IPv4 or IPv6 socket and the length from IP options turned
3704  *      on at the socket. Assumes that the caller has a lock on the socket.
3705  */
3706
3707 u32 kernel_sock_ip_overhead(struct sock *sk)
3708 {
3709         struct inet_sock *inet;
3710         struct ip_options_rcu *opt;
3711         u32 overhead = 0;
3712 #if IS_ENABLED(CONFIG_IPV6)
3713         struct ipv6_pinfo *np;
3714         struct ipv6_txoptions *optv6 = NULL;
3715 #endif /* IS_ENABLED(CONFIG_IPV6) */
3716
3717         if (!sk)
3718                 return overhead;
3719
3720         switch (sk->sk_family) {
3721         case AF_INET:
3722                 inet = inet_sk(sk);
3723                 overhead += sizeof(struct iphdr);
3724                 opt = rcu_dereference_protected(inet->inet_opt,
3725                                                 sock_owned_by_user(sk));
3726                 if (opt)
3727                         overhead += opt->opt.optlen;
3728                 return overhead;
3729 #if IS_ENABLED(CONFIG_IPV6)
3730         case AF_INET6:
3731                 np = inet6_sk(sk);
3732                 overhead += sizeof(struct ipv6hdr);
3733                 if (np)
3734                         optv6 = rcu_dereference_protected(np->opt,
3735                                                           sock_owned_by_user(sk));
3736                 if (optv6)
3737                         overhead += (optv6->opt_flen + optv6->opt_nflen);
3738                 return overhead;
3739 #endif /* IS_ENABLED(CONFIG_IPV6) */
3740         default: /* Returns 0 overhead if the socket is not ipv4 or ipv6 */
3741                 return overhead;
3742         }
3743 }
3744 EXPORT_SYMBOL(kernel_sock_ip_overhead);