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