linux/net/socket.c
<<
>>
Prefs
   1/*
   2 * NET          An implementation of the SOCKET network access protocol.
   3 *
   4 * Version:     @(#)socket.c    1.1.93  18/02/95
   5 *
   6 * Authors:     Orest Zborowski, <obz@Kodak.COM>
   7 *              Ross Biro
   8 *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
   9 *
  10 * Fixes:
  11 *              Anonymous       :       NOTSOCK/BADF cleanup. Error fix in
  12 *                                      shutdown()
  13 *              Alan Cox        :       verify_area() fixes
  14 *              Alan Cox        :       Removed DDI
  15 *              Jonathan Kamens :       SOCK_DGRAM reconnect bug
  16 *              Alan Cox        :       Moved a load of checks to the very
  17 *                                      top level.
  18 *              Alan Cox        :       Move address structures to/from user
  19 *                                      mode above the protocol layers.
  20 *              Rob Janssen     :       Allow 0 length sends.
  21 *              Alan Cox        :       Asynchronous I/O support (cribbed from the
  22 *                                      tty drivers).
  23 *              Niibe Yutaka    :       Asynchronous I/O for writes (4.4BSD style)
  24 *              Jeff Uphoff     :       Made max number of sockets command-line
  25 *                                      configurable.
  26 *              Matti Aarnio    :       Made the number of sockets dynamic,
  27 *                                      to be allocated when needed, and mr.
  28 *                                      Uphoff's max is used as max to be
  29 *                                      allowed to allocate.
  30 *              Linus           :       Argh. removed all the socket allocation
  31 *                                      altogether: it's in the inode now.
  32 *              Alan Cox        :       Made sock_alloc()/sock_release() public
  33 *                                      for NetROM and future kernel nfsd type
  34 *                                      stuff.
  35 *              Alan Cox        :       sendmsg/recvmsg basics.
  36 *              Tom Dyas        :       Export net symbols.
  37 *              Marcin Dalecki  :       Fixed problems with CONFIG_NET="n".
  38 *              Alan Cox        :       Added thread locking to sys_* calls
  39 *                                      for sockets. May have errors at the
  40 *                                      moment.
  41 *              Kevin Buhr      :       Fixed the dumb errors in the above.
  42 *              Andi Kleen      :       Some small cleanups, optimizations,
  43 *                                      and fixed a copy_from_user() bug.
  44 *              Tigran Aivazian :       sys_send(args) calls sys_sendto(args, NULL, 0)
  45 *              Tigran Aivazian :       Made listen(2) backlog sanity checks
  46 *                                      protocol-independent
  47 *
  48 *
  49 *              This program is free software; you can redistribute it and/or
  50 *              modify it under the terms of the GNU General Public License
  51 *              as published by the Free Software Foundation; either version
  52 *              2 of the License, or (at your option) any later version.
  53 *
  54 *
  55 *      This module is effectively the top level interface to the BSD socket
  56 *      paradigm.
  57 *
  58 *      Based upon Swansea University Computer Society NET3.039
  59 */
  60
  61#include <linux/mm.h>
  62#include <linux/socket.h>
  63#include <linux/file.h>
  64#include <linux/net.h>
  65#include <linux/interrupt.h>
  66#include <linux/thread_info.h>
  67#include <linux/rcupdate.h>
  68#include <linux/netdevice.h>
  69#include <linux/proc_fs.h>
  70#include <linux/seq_file.h>
  71#include <linux/mutex.h>
  72#include <linux/if_bridge.h>
  73#include <linux/if_frad.h>
  74#include <linux/if_vlan.h>
  75#include <linux/init.h>
  76#include <linux/poll.h>
  77#include <linux/cache.h>
  78#include <linux/module.h>
  79#include <linux/highmem.h>
  80#include <linux/mount.h>
  81#include <linux/security.h>
  82#include <linux/syscalls.h>
  83#include <linux/compat.h>
  84#include <linux/kmod.h>
  85#include <linux/audit.h>
  86#include <linux/wireless.h>
  87#include <linux/nsproxy.h>
  88#include <linux/magic.h>
  89#include <linux/slab.h>
  90#include <linux/xattr.h>
  91
  92#include <asm/uaccess.h>
  93#include <asm/unistd.h>
  94
  95#include <net/compat.h>
  96#include <net/wext.h>
  97#include <net/cls_cgroup.h>
  98
  99#include <net/sock.h>
 100#include <linux/netfilter.h>
 101
 102#include <linux/if_tun.h>
 103#include <linux/ipv6_route.h>
 104#include <linux/route.h>
 105#include <linux/sockios.h>
 106#include <linux/atalk.h>
 107
 108static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
 109static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
 110                         unsigned long nr_segs, loff_t pos);
 111static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
 112                          unsigned long nr_segs, loff_t pos);
 113static int sock_mmap(struct file *file, struct vm_area_struct *vma);
 114
 115static int sock_close(struct inode *inode, struct file *file);
 116static unsigned int sock_poll(struct file *file,
 117                              struct poll_table_struct *wait);
 118static long sock_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
 119#ifdef CONFIG_COMPAT
 120static long compat_sock_ioctl(struct file *file,
 121                              unsigned int cmd, unsigned long arg);
 122#endif
 123static int sock_fasync(int fd, struct file *filp, int on);
 124static ssize_t sock_sendpage(struct file *file, struct page *page,
 125                             int offset, size_t size, loff_t *ppos, int more);
 126static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
 127                                struct pipe_inode_info *pipe, size_t len,
 128                                unsigned int flags);
 129
 130/*
 131 *      Socket files have a set of 'special' operations as well as the generic file ones. These don't appear
 132 *      in the operation structures but are done directly via the socketcall() multiplexor.
 133 */
 134
 135static const struct file_operations socket_file_ops = {
 136        .owner =        THIS_MODULE,
 137        .llseek =       no_llseek,
 138        .aio_read =     sock_aio_read,
 139        .aio_write =    sock_aio_write,
 140        .poll =         sock_poll,
 141        .unlocked_ioctl = sock_ioctl,
 142#ifdef CONFIG_COMPAT
 143        .compat_ioctl = compat_sock_ioctl,
 144#endif
 145        .mmap =         sock_mmap,
 146        .open =         sock_no_open,   /* special open code to disallow open via /proc */
 147        .release =      sock_close,
 148        .fasync =       sock_fasync,
 149        .sendpage =     sock_sendpage,
 150        .splice_write = generic_splice_sendpage,
 151        .splice_read =  sock_splice_read,
 152};
 153
 154/*
 155 *      The protocol list. Each protocol is registered in here.
 156 */
 157
 158static DEFINE_SPINLOCK(net_family_lock);
 159static const struct net_proto_family __rcu *net_families[NPROTO] __read_mostly;
 160
 161/*
 162 *      Statistics counters of the socket lists
 163 */
 164
 165static DEFINE_PER_CPU(int, sockets_in_use);
 166
 167/*
 168 * Support routines.
 169 * Move socket addresses back and forth across the kernel/user
 170 * divide and look after the messy bits.
 171 */
 172
 173/**
 174 *      move_addr_to_kernel     -       copy a socket address into kernel space
 175 *      @uaddr: Address in user space
 176 *      @kaddr: Address in kernel space
 177 *      @ulen: Length in user space
 178 *
 179 *      The address is copied into kernel space. If the provided address is
 180 *      too long an error code of -EINVAL is returned. If the copy gives
 181 *      invalid addresses -EFAULT is returned. On a success 0 is returned.
 182 */
 183
 184int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr_storage *kaddr)
 185{
 186        if (ulen < 0 || ulen > sizeof(struct sockaddr_storage))
 187                return -EINVAL;
 188        if (ulen == 0)
 189                return 0;
 190        if (copy_from_user(kaddr, uaddr, ulen))
 191                return -EFAULT;
 192        return audit_sockaddr(ulen, kaddr);
 193}
 194
 195/**
 196 *      move_addr_to_user       -       copy an address to user space
 197 *      @kaddr: kernel space address
 198 *      @klen: length of address in kernel
 199 *      @uaddr: user space address
 200 *      @ulen: pointer to user length field
 201 *
 202 *      The value pointed to by ulen on entry is the buffer length available.
 203 *      This is overwritten with the buffer space used. -EINVAL is returned
 204 *      if an overlong buffer is specified or a negative buffer size. -EFAULT
 205 *      is returned if either the buffer or the length field are not
 206 *      accessible.
 207 *      After copying the data up to the limit the user specifies, the true
 208 *      length of the data is written over the length limit the user
 209 *      specified. Zero is returned for a success.
 210 */
 211
 212static int move_addr_to_user(struct sockaddr_storage *kaddr, int klen,
 213                             void __user *uaddr, int __user *ulen)
 214{
 215        int err;
 216        int len;
 217
 218        err = get_user(len, ulen);
 219        if (err)
 220                return err;
 221        if (len > klen)
 222                len = klen;
 223        if (len < 0 || len > sizeof(struct sockaddr_storage))
 224                return -EINVAL;
 225        if (len) {
 226                if (audit_sockaddr(klen, kaddr))
 227                        return -ENOMEM;
 228                if (copy_to_user(uaddr, kaddr, len))
 229                        return -EFAULT;
 230        }
 231        /*
 232         *      "fromlen shall refer to the value before truncation.."
 233         *                      1003.1g
 234         */
 235        return __put_user(klen, ulen);
 236}
 237
 238static struct kmem_cache *sock_inode_cachep __read_mostly;
 239
 240static struct inode *sock_alloc_inode(struct super_block *sb)
 241{
 242        struct socket_alloc *ei;
 243        struct socket_wq *wq;
 244
 245        ei = kmem_cache_alloc(sock_inode_cachep, GFP_KERNEL);
 246        if (!ei)
 247                return NULL;
 248        wq = kmalloc(sizeof(*wq), GFP_KERNEL);
 249        if (!wq) {
 250                kmem_cache_free(sock_inode_cachep, ei);
 251                return NULL;
 252        }
 253        init_waitqueue_head(&wq->wait);
 254        wq->fasync_list = NULL;
 255        RCU_INIT_POINTER(ei->socket.wq, wq);
 256
 257        ei->socket.state = SS_UNCONNECTED;
 258        ei->socket.flags = 0;
 259        ei->socket.ops = NULL;
 260        ei->socket.sk = NULL;
 261        ei->socket.file = NULL;
 262
 263        return &ei->vfs_inode;
 264}
 265
 266static void sock_destroy_inode(struct inode *inode)
 267{
 268        struct socket_alloc *ei;
 269        struct socket_wq *wq;
 270
 271        ei = container_of(inode, struct socket_alloc, vfs_inode);
 272        wq = rcu_dereference_protected(ei->socket.wq, 1);
 273        kfree_rcu(wq, rcu);
 274        kmem_cache_free(sock_inode_cachep, ei);
 275}
 276
 277static void init_once(void *foo)
 278{
 279        struct socket_alloc *ei = (struct socket_alloc *)foo;
 280
 281        inode_init_once(&ei->vfs_inode);
 282}
 283
 284static int init_inodecache(void)
 285{
 286        sock_inode_cachep = kmem_cache_create("sock_inode_cache",
 287                                              sizeof(struct socket_alloc),
 288                                              0,
 289                                              (SLAB_HWCACHE_ALIGN |
 290                                               SLAB_RECLAIM_ACCOUNT |
 291                                               SLAB_MEM_SPREAD),
 292                                              init_once);
 293        if (sock_inode_cachep == NULL)
 294                return -ENOMEM;
 295        return 0;
 296}
 297
 298static const struct super_operations sockfs_ops = {
 299        .alloc_inode    = sock_alloc_inode,
 300        .destroy_inode  = sock_destroy_inode,
 301        .statfs         = simple_statfs,
 302};
 303
 304/*
 305 * sockfs_dname() is called from d_path().
 306 */
 307static char *sockfs_dname(struct dentry *dentry, char *buffer, int buflen)
 308{
 309        return dynamic_dname(dentry, buffer, buflen, "socket:[%lu]",
 310                                dentry->d_inode->i_ino);
 311}
 312
 313static const struct dentry_operations sockfs_dentry_operations = {
 314        .d_dname  = sockfs_dname,
 315};
 316
 317static struct dentry *sockfs_mount(struct file_system_type *fs_type,
 318                         int flags, const char *dev_name, void *data)
 319{
 320        return mount_pseudo(fs_type, "socket:", &sockfs_ops,
 321                &sockfs_dentry_operations, SOCKFS_MAGIC);
 322}
 323
 324static struct vfsmount *sock_mnt __read_mostly;
 325
 326static struct file_system_type sock_fs_type = {
 327        .name =         "sockfs",
 328        .mount =        sockfs_mount,
 329        .kill_sb =      kill_anon_super,
 330};
 331
 332/*
 333 *      Obtains the first available file descriptor and sets it up for use.
 334 *
 335 *      These functions create file structures and maps them to fd space
 336 *      of the current process. On success it returns file descriptor
 337 *      and file struct implicitly stored in sock->file.
 338 *      Note that another thread may close file descriptor before we return
 339 *      from this function. We use the fact that now we do not refer
 340 *      to socket after mapping. If one day we will need it, this
 341 *      function will increment ref. count on file by 1.
 342 *
 343 *      In any case returned fd MAY BE not valid!
 344 *      This race condition is unavoidable
 345 *      with shared fd spaces, we cannot solve it inside kernel,
 346 *      but we take care of internal coherence yet.
 347 */
 348
 349struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)
 350{
 351        struct qstr name = { .name = "" };
 352        struct path path;
 353        struct file *file;
 354
 355        if (dname) {
 356                name.name = dname;
 357                name.len = strlen(name.name);
 358        } else if (sock->sk) {
 359                name.name = sock->sk->sk_prot_creator->name;
 360                name.len = strlen(name.name);
 361        }
 362        path.dentry = d_alloc_pseudo(sock_mnt->mnt_sb, &name);
 363        if (unlikely(!path.dentry))
 364                return ERR_PTR(-ENOMEM);
 365        path.mnt = mntget(sock_mnt);
 366
 367        d_instantiate(path.dentry, SOCK_INODE(sock));
 368        SOCK_INODE(sock)->i_fop = &socket_file_ops;
 369
 370        file = alloc_file(&path, FMODE_READ | FMODE_WRITE,
 371                  &socket_file_ops);
 372        if (unlikely(IS_ERR(file))) {
 373                /* drop dentry, keep inode */
 374                ihold(path.dentry->d_inode);
 375                path_put(&path);
 376                return file;
 377        }
 378
 379        sock->file = file;
 380        file->f_flags = O_RDWR | (flags & O_NONBLOCK);
 381        file->private_data = sock;
 382        return file;
 383}
 384EXPORT_SYMBOL(sock_alloc_file);
 385
 386static int sock_map_fd(struct socket *sock, int flags)
 387{
 388        struct file *newfile;
 389        int fd = get_unused_fd_flags(flags);
 390        if (unlikely(fd < 0))
 391                return fd;
 392
 393        newfile = sock_alloc_file(sock, flags, NULL);
 394        if (likely(!IS_ERR(newfile))) {
 395                fd_install(fd, newfile);
 396                return fd;
 397        }
 398
 399        put_unused_fd(fd);
 400        return PTR_ERR(newfile);
 401}
 402
 403struct socket *sock_from_file(struct file *file, int *err)
 404{
 405        if (file->f_op == &socket_file_ops)
 406                return file->private_data;      /* set in sock_map_fd */
 407
 408        *err = -ENOTSOCK;
 409        return NULL;
 410}
 411EXPORT_SYMBOL(sock_from_file);
 412
 413/**
 414 *      sockfd_lookup - Go from a file number to its socket slot
 415 *      @fd: file handle
 416 *      @err: pointer to an error code return
 417 *
 418 *      The file handle passed in is locked and the socket it is bound
 419 *      too is returned. If an error occurs the err pointer is overwritten
 420 *      with a negative errno code and NULL is returned. The function checks
 421 *      for both invalid handles and passing a handle which is not a socket.
 422 *
 423 *      On a success the socket object pointer is returned.
 424 */
 425
 426struct socket *sockfd_lookup(int fd, int *err)
 427{
 428        struct file *file;
 429        struct socket *sock;
 430
 431        file = fget(fd);
 432        if (!file) {
 433                *err = -EBADF;
 434                return NULL;
 435        }
 436
 437        sock = sock_from_file(file, err);
 438        if (!sock)
 439                fput(file);
 440        return sock;
 441}
 442EXPORT_SYMBOL(sockfd_lookup);
 443
 444static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)
 445{
 446        struct file *file;
 447        struct socket *sock;
 448
 449        *err = -EBADF;
 450        file = fget_light(fd, fput_needed);
 451        if (file) {
 452                sock = sock_from_file(file, err);
 453                if (sock)
 454                        return sock;
 455                fput_light(file, *fput_needed);
 456        }
 457        return NULL;
 458}
 459
 460#define XATTR_SOCKPROTONAME_SUFFIX "sockprotoname"
 461#define XATTR_NAME_SOCKPROTONAME (XATTR_SYSTEM_PREFIX XATTR_SOCKPROTONAME_SUFFIX)
 462#define XATTR_NAME_SOCKPROTONAME_LEN (sizeof(XATTR_NAME_SOCKPROTONAME)-1)
 463static ssize_t sockfs_getxattr(struct dentry *dentry,
 464                               const char *name, void *value, size_t size)
 465{
 466        const char *proto_name;
 467        size_t proto_size;
 468        int error;
 469
 470        error = -ENODATA;
 471        if (!strncmp(name, XATTR_NAME_SOCKPROTONAME, XATTR_NAME_SOCKPROTONAME_LEN)) {
 472                proto_name = dentry->d_name.name;
 473                proto_size = strlen(proto_name);
 474
 475                if (value) {
 476                        error = -ERANGE;
 477                        if (proto_size + 1 > size)
 478                                goto out;
 479
 480                        strncpy(value, proto_name, proto_size + 1);
 481                }
 482                error = proto_size + 1;
 483        }
 484
 485out:
 486        return error;
 487}
 488
 489static ssize_t sockfs_listxattr(struct dentry *dentry, char *buffer,
 490                                size_t size)
 491{
 492        ssize_t len;
 493        ssize_t used = 0;
 494
 495        len = security_inode_listsecurity(dentry->d_inode, buffer, size);
 496        if (len < 0)
 497                return len;
 498        used += len;
 499        if (buffer) {
 500                if (size < used)
 501                        return -ERANGE;
 502                buffer += len;
 503        }
 504
 505        len = (XATTR_NAME_SOCKPROTONAME_LEN + 1);
 506        used += len;
 507        if (buffer) {
 508                if (size < used)
 509                        return -ERANGE;
 510                memcpy(buffer, XATTR_NAME_SOCKPROTONAME, len);
 511                buffer += len;
 512        }
 513
 514        return used;
 515}
 516
 517static const struct inode_operations sockfs_inode_ops = {
 518        .getxattr = sockfs_getxattr,
 519        .listxattr = sockfs_listxattr,
 520};
 521
 522/**
 523 *      sock_alloc      -       allocate a socket
 524 *
 525 *      Allocate a new inode and socket object. The two are bound together
 526 *      and initialised. The socket is then returned. If we are out of inodes
 527 *      NULL is returned.
 528 */
 529
 530static struct socket *sock_alloc(void)
 531{
 532        struct inode *inode;
 533        struct socket *sock;
 534
 535        inode = new_inode_pseudo(sock_mnt->mnt_sb);
 536        if (!inode)
 537                return NULL;
 538
 539        sock = SOCKET_I(inode);
 540
 541        kmemcheck_annotate_bitfield(sock, type);
 542        inode->i_ino = get_next_ino();
 543        inode->i_mode = S_IFSOCK | S_IRWXUGO;
 544        inode->i_uid = current_fsuid();
 545        inode->i_gid = current_fsgid();
 546        inode->i_op = &sockfs_inode_ops;
 547
 548        this_cpu_add(sockets_in_use, 1);
 549        return sock;
 550}
 551
 552/*
 553 *      In theory you can't get an open on this inode, but /proc provides
 554 *      a back door. Remember to keep it shut otherwise you'll let the
 555 *      creepy crawlies in.
 556 */
 557
 558static int sock_no_open(struct inode *irrelevant, struct file *dontcare)
 559{
 560        return -ENXIO;
 561}
 562
 563const struct file_operations bad_sock_fops = {
 564        .owner = THIS_MODULE,
 565        .open = sock_no_open,
 566        .llseek = noop_llseek,
 567};
 568
 569/**
 570 *      sock_release    -       close a socket
 571 *      @sock: socket to close
 572 *
 573 *      The socket is released from the protocol stack if it has a release
 574 *      callback, and the inode is then released if the socket is bound to
 575 *      an inode not a file.
 576 */
 577
 578void sock_release(struct socket *sock)
 579{
 580        if (sock->ops) {
 581                struct module *owner = sock->ops->owner;
 582
 583                sock->ops->release(sock);
 584                sock->ops = NULL;
 585                module_put(owner);
 586        }
 587
 588        if (rcu_dereference_protected(sock->wq, 1)->fasync_list)
 589                printk(KERN_ERR "sock_release: fasync list not empty!\n");
 590
 591        if (test_bit(SOCK_EXTERNALLY_ALLOCATED, &sock->flags))
 592                return;
 593
 594        this_cpu_sub(sockets_in_use, 1);
 595        if (!sock->file) {
 596                iput(SOCK_INODE(sock));
 597                return;
 598        }
 599        sock->file = NULL;
 600}
 601EXPORT_SYMBOL(sock_release);
 602
 603int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags)
 604{
 605        *tx_flags = 0;
 606        if (sock_flag(sk, SOCK_TIMESTAMPING_TX_HARDWARE))
 607                *tx_flags |= SKBTX_HW_TSTAMP;
 608        if (sock_flag(sk, SOCK_TIMESTAMPING_TX_SOFTWARE))
 609                *tx_flags |= SKBTX_SW_TSTAMP;
 610        if (sock_flag(sk, SOCK_WIFI_STATUS))
 611                *tx_flags |= SKBTX_WIFI_STATUS;
 612        return 0;
 613}
 614EXPORT_SYMBOL(sock_tx_timestamp);
 615
 616static inline int __sock_sendmsg_nosec(struct kiocb *iocb, struct socket *sock,
 617                                       struct msghdr *msg, size_t size)
 618{
 619        struct sock_iocb *si = kiocb_to_siocb(iocb);
 620
 621        si->sock = sock;
 622        si->scm = NULL;
 623        si->msg = msg;
 624        si->size = size;
 625
 626        return sock->ops->sendmsg(iocb, sock, msg, size);
 627}
 628
 629static inline int __sock_sendmsg(struct kiocb *iocb, struct socket *sock,
 630                                 struct msghdr *msg, size_t size)
 631{
 632        int err = security_socket_sendmsg(sock, msg, size);
 633
 634        return err ?: __sock_sendmsg_nosec(iocb, sock, msg, size);
 635}
 636
 637int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 638{
 639        struct kiocb iocb;
 640        struct sock_iocb siocb;
 641        int ret;
 642
 643        init_sync_kiocb(&iocb, NULL);
 644        iocb.private = &siocb;
 645        ret = __sock_sendmsg(&iocb, sock, msg, size);
 646        if (-EIOCBQUEUED == ret)
 647                ret = wait_on_sync_kiocb(&iocb);
 648        return ret;
 649}
 650EXPORT_SYMBOL(sock_sendmsg);
 651
 652static int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg, size_t size)
 653{
 654        struct kiocb iocb;
 655        struct sock_iocb siocb;
 656        int ret;
 657
 658        init_sync_kiocb(&iocb, NULL);
 659        iocb.private = &siocb;
 660        ret = __sock_sendmsg_nosec(&iocb, sock, msg, size);
 661        if (-EIOCBQUEUED == ret)
 662                ret = wait_on_sync_kiocb(&iocb);
 663        return ret;
 664}
 665
 666int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
 667                   struct kvec *vec, size_t num, size_t size)
 668{
 669        mm_segment_t oldfs = get_fs();
 670        int result;
 671
 672        set_fs(KERNEL_DS);
 673        /*
 674         * the following is safe, since for compiler definitions of kvec and
 675         * iovec are identical, yielding the same in-core layout and alignment
 676         */
 677        msg->msg_iov = (struct iovec *)vec;
 678        msg->msg_iovlen = num;
 679        result = sock_sendmsg(sock, msg, size);
 680        set_fs(oldfs);
 681        return result;
 682}
 683EXPORT_SYMBOL(kernel_sendmsg);
 684
 685static int ktime2ts(ktime_t kt, struct timespec *ts)
 686{
 687        if (kt.tv64) {
 688                *ts = ktime_to_timespec(kt);
 689                return 1;
 690        } else {
 691                return 0;
 692        }
 693}
 694
 695/*
 696 * called from sock_recv_timestamp() if sock_flag(sk, SOCK_RCVTSTAMP)
 697 */
 698void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
 699        struct sk_buff *skb)
 700{
 701        int need_software_tstamp = sock_flag(sk, SOCK_RCVTSTAMP);
 702        struct timespec ts[3];
 703        int empty = 1;
 704        struct skb_shared_hwtstamps *shhwtstamps =
 705                skb_hwtstamps(skb);
 706
 707        /* Race occurred between timestamp enabling and packet
 708           receiving.  Fill in the current time for now. */
 709        if (need_software_tstamp && skb->tstamp.tv64 == 0)
 710                __net_timestamp(skb);
 711
 712        if (need_software_tstamp) {
 713                if (!sock_flag(sk, SOCK_RCVTSTAMPNS)) {
 714                        struct timeval tv;
 715                        skb_get_timestamp(skb, &tv);
 716                        put_cmsg(msg, SOL_SOCKET, SCM_TIMESTAMP,
 717                                 sizeof(tv), &tv);
 718                } else {
 719                        skb_get_timestampns(skb, &ts[0]);
 720                        put_cmsg(msg, SOL_SOCKET, SCM_TIMESTAMPNS,
 721                                 sizeof(ts[0]), &ts[0]);
 722                }
 723        }
 724
 725
 726        memset(ts, 0, sizeof(ts));
 727        if (skb->tstamp.tv64 &&
 728            sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE)) {
 729                skb_get_timestampns(skb, ts + 0);
 730                empty = 0;
 731        }
 732        if (shhwtstamps) {
 733                if (sock_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE) &&
 734                    ktime2ts(shhwtstamps->syststamp, ts + 1))
 735                        empty = 0;
 736                if (sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE) &&
 737                    ktime2ts(shhwtstamps->hwtstamp, ts + 2))
 738                        empty = 0;
 739        }
 740        if (!empty)
 741                put_cmsg(msg, SOL_SOCKET,
 742                         SCM_TIMESTAMPING, sizeof(ts), &ts);
 743}
 744EXPORT_SYMBOL_GPL(__sock_recv_timestamp);
 745
 746void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
 747        struct sk_buff *skb)
 748{
 749        int ack;
 750
 751        if (!sock_flag(sk, SOCK_WIFI_STATUS))
 752                return;
 753        if (!skb->wifi_acked_valid)
 754                return;
 755
 756        ack = skb->wifi_acked;
 757
 758        put_cmsg(msg, SOL_SOCKET, SCM_WIFI_STATUS, sizeof(ack), &ack);
 759}
 760EXPORT_SYMBOL_GPL(__sock_recv_wifi_status);
 761
 762static inline void sock_recv_drops(struct msghdr *msg, struct sock *sk,
 763                                   struct sk_buff *skb)
 764{
 765        if (sock_flag(sk, SOCK_RXQ_OVFL) && skb && skb->dropcount)
 766                put_cmsg(msg, SOL_SOCKET, SO_RXQ_OVFL,
 767                        sizeof(__u32), &skb->dropcount);
 768}
 769
 770void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
 771        struct sk_buff *skb)
 772{
 773        sock_recv_timestamp(msg, sk, skb);
 774        sock_recv_drops(msg, sk, skb);
 775}
 776EXPORT_SYMBOL_GPL(__sock_recv_ts_and_drops);
 777
 778static inline int __sock_recvmsg_nosec(struct kiocb *iocb, struct socket *sock,
 779                                       struct msghdr *msg, size_t size, int flags)
 780{
 781        struct sock_iocb *si = kiocb_to_siocb(iocb);
 782
 783        si->sock = sock;
 784        si->scm = NULL;
 785        si->msg = msg;
 786        si->size = size;
 787        si->flags = flags;
 788
 789        return sock->ops->recvmsg(iocb, sock, msg, size, flags);
 790}
 791
 792static inline int __sock_recvmsg(struct kiocb *iocb, struct socket *sock,
 793                                 struct msghdr *msg, size_t size, int flags)
 794{
 795        int err = security_socket_recvmsg(sock, msg, size, flags);
 796
 797        return err ?: __sock_recvmsg_nosec(iocb, sock, msg, size, flags);
 798}
 799
 800int sock_recvmsg(struct socket *sock, struct msghdr *msg,
 801                 size_t size, int flags)
 802{
 803        struct kiocb iocb;
 804        struct sock_iocb siocb;
 805        int ret;
 806
 807        init_sync_kiocb(&iocb, NULL);
 808        iocb.private = &siocb;
 809        ret = __sock_recvmsg(&iocb, sock, msg, size, flags);
 810        if (-EIOCBQUEUED == ret)
 811                ret = wait_on_sync_kiocb(&iocb);
 812        return ret;
 813}
 814EXPORT_SYMBOL(sock_recvmsg);
 815
 816static int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,
 817                              size_t size, int flags)
 818{
 819        struct kiocb iocb;
 820        struct sock_iocb siocb;
 821        int ret;
 822
 823        init_sync_kiocb(&iocb, NULL);
 824        iocb.private = &siocb;
 825        ret = __sock_recvmsg_nosec(&iocb, sock, msg, size, flags);
 826        if (-EIOCBQUEUED == ret)
 827                ret = wait_on_sync_kiocb(&iocb);
 828        return ret;
 829}
 830
 831/**
 832 * kernel_recvmsg - Receive a message from a socket (kernel space)
 833 * @sock:       The socket to receive the message from
 834 * @msg:        Received message
 835 * @vec:        Input s/g array for message data
 836 * @num:        Size of input s/g array
 837 * @size:       Number of bytes to read
 838 * @flags:      Message flags (MSG_DONTWAIT, etc...)
 839 *
 840 * On return the msg structure contains the scatter/gather array passed in the
 841 * vec argument. The array is modified so that it consists of the unfilled
 842 * portion of the original array.
 843 *
 844 * The returned value is the total number of bytes received, or an error.
 845 */
 846int kernel_recvmsg(struct socket *sock, struct msghdr *msg,
 847                   struct kvec *vec, size_t num, size_t size, int flags)
 848{
 849        mm_segment_t oldfs = get_fs();
 850        int result;
 851
 852        set_fs(KERNEL_DS);
 853        /*
 854         * the following is safe, since for compiler definitions of kvec and
 855         * iovec are identical, yielding the same in-core layout and alignment
 856         */
 857        msg->msg_iov = (struct iovec *)vec, msg->msg_iovlen = num;
 858        result = sock_recvmsg(sock, msg, size, flags);
 859        set_fs(oldfs);
 860        return result;
 861}
 862EXPORT_SYMBOL(kernel_recvmsg);
 863
 864static void sock_aio_dtor(struct kiocb *iocb)
 865{
 866        kfree(iocb->private);
 867}
 868
 869static ssize_t sock_sendpage(struct file *file, struct page *page,
 870                             int offset, size_t size, loff_t *ppos, int more)
 871{
 872        struct socket *sock;
 873        int flags;
 874
 875        sock = file->private_data;
 876
 877        flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
 878        /* more is a combination of MSG_MORE and MSG_SENDPAGE_NOTLAST */
 879        flags |= more;
 880
 881        return kernel_sendpage(sock, page, offset, size, flags);
 882}
 883
 884static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
 885                                struct pipe_inode_info *pipe, size_t len,
 886                                unsigned int flags)
 887{
 888        struct socket *sock = file->private_data;
 889
 890        if (unlikely(!sock->ops->splice_read))
 891                return -EINVAL;
 892
 893        return sock->ops->splice_read(sock, ppos, pipe, len, flags);
 894}
 895
 896static struct sock_iocb *alloc_sock_iocb(struct kiocb *iocb,
 897                                         struct sock_iocb *siocb)
 898{
 899        if (!is_sync_kiocb(iocb)) {
 900                siocb = kmalloc(sizeof(*siocb), GFP_KERNEL);
 901                if (!siocb)
 902                        return NULL;
 903                iocb->ki_dtor = sock_aio_dtor;
 904        }
 905
 906        siocb->kiocb = iocb;
 907        iocb->private = siocb;
 908        return siocb;
 909}
 910
 911static ssize_t do_sock_read(struct msghdr *msg, struct kiocb *iocb,
 912                struct file *file, const struct iovec *iov,
 913                unsigned long nr_segs)
 914{
 915        struct socket *sock = file->private_data;
 916        size_t size = 0;
 917        int i;
 918
 919        for (i = 0; i < nr_segs; i++)
 920                size += iov[i].iov_len;
 921
 922        msg->msg_name = NULL;
 923        msg->msg_namelen = 0;
 924        msg->msg_control = NULL;
 925        msg->msg_controllen = 0;
 926        msg->msg_iov = (struct iovec *)iov;
 927        msg->msg_iovlen = nr_segs;
 928        msg->msg_flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
 929
 930        return __sock_recvmsg(iocb, sock, msg, size, msg->msg_flags);
 931}
 932
 933static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
 934                                unsigned long nr_segs, loff_t pos)
 935{
 936        struct sock_iocb siocb, *x;
 937
 938        if (pos != 0)
 939                return -ESPIPE;
 940
 941        if (iocb->ki_left == 0) /* Match SYS5 behaviour */
 942                return 0;
 943
 944
 945        x = alloc_sock_iocb(iocb, &siocb);
 946        if (!x)
 947                return -ENOMEM;
 948        return do_sock_read(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
 949}
 950
 951static ssize_t do_sock_write(struct msghdr *msg, struct kiocb *iocb,
 952                        struct file *file, const struct iovec *iov,
 953                        unsigned long nr_segs)
 954{
 955        struct socket *sock = file->private_data;
 956        size_t size = 0;
 957        int i;
 958
 959        for (i = 0; i < nr_segs; i++)
 960                size += iov[i].iov_len;
 961
 962        msg->msg_name = NULL;
 963        msg->msg_namelen = 0;
 964        msg->msg_control = NULL;
 965        msg->msg_controllen = 0;
 966        msg->msg_iov = (struct iovec *)iov;
 967        msg->msg_iovlen = nr_segs;
 968        msg->msg_flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
 969        if (sock->type == SOCK_SEQPACKET)
 970                msg->msg_flags |= MSG_EOR;
 971
 972        return __sock_sendmsg(iocb, sock, msg, size);
 973}
 974
 975static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
 976                          unsigned long nr_segs, loff_t pos)
 977{
 978        struct sock_iocb siocb, *x;
 979
 980        if (pos != 0)
 981                return -ESPIPE;
 982
 983        x = alloc_sock_iocb(iocb, &siocb);
 984        if (!x)
 985                return -ENOMEM;
 986
 987        return do_sock_write(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
 988}
 989
 990/*
 991 * Atomic setting of ioctl hooks to avoid race
 992 * with module unload.
 993 */
 994
 995static DEFINE_MUTEX(br_ioctl_mutex);
 996static int (*br_ioctl_hook) (struct net *, unsigned int cmd, void __user *arg);
 997
 998void brioctl_set(int (*hook) (struct net *, unsigned int, void __user *))
 999{
1000        mutex_lock(&br_ioctl_mutex);
1001        br_ioctl_hook = hook;
1002        mutex_unlock(&br_ioctl_mutex);
1003}
1004EXPORT_SYMBOL(brioctl_set);
1005
1006static DEFINE_MUTEX(vlan_ioctl_mutex);
1007static int (*vlan_ioctl_hook) (struct net *, void __user *arg);
1008
1009void vlan_ioctl_set(int (*hook) (struct net *, void __user *))
1010{
1011        mutex_lock(&vlan_ioctl_mutex);
1012        vlan_ioctl_hook = hook;
1013        mutex_unlock(&vlan_ioctl_mutex);
1014}
1015EXPORT_SYMBOL(vlan_ioctl_set);
1016
1017static DEFINE_MUTEX(dlci_ioctl_mutex);
1018static int (*dlci_ioctl_hook) (unsigned int, void __user *);
1019
1020void dlci_ioctl_set(int (*hook) (unsigned int, void __user *))
1021{
1022        mutex_lock(&dlci_ioctl_mutex);
1023        dlci_ioctl_hook = hook;
1024        mutex_unlock(&dlci_ioctl_mutex);
1025}
1026EXPORT_SYMBOL(dlci_ioctl_set);
1027
1028static long sock_do_ioctl(struct net *net, struct socket *sock,
1029                                 unsigned int cmd, unsigned long arg)
1030{
1031        int err;
1032        void __user *argp = (void __user *)arg;
1033
1034        err = sock->ops->ioctl(sock, cmd, arg);
1035
1036        /*
1037         * If this ioctl is unknown try to hand it down
1038         * to the NIC driver.
1039         */
1040        if (err == -ENOIOCTLCMD)
1041                err = dev_ioctl(net, cmd, argp);
1042
1043        return err;
1044}
1045
1046/*
1047 *      With an ioctl, arg may well be a user mode pointer, but we don't know
1048 *      what to do with it - that's up to the protocol still.
1049 */
1050
1051static long sock_ioctl(struct file *file, unsigned cmd, unsigned long arg)
1052{
1053        struct socket *sock;
1054        struct sock *sk;
1055        void __user *argp = (void __user *)arg;
1056        int pid, err;
1057        struct net *net;
1058
1059        sock = file->private_data;
1060        sk = sock->sk;
1061        net = sock_net(sk);
1062        if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) {
1063                err = dev_ioctl(net, cmd, argp);
1064        } else
1065#ifdef CONFIG_WEXT_CORE
1066        if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
1067                err = dev_ioctl(net, cmd, argp);
1068        } else
1069#endif
1070                switch (cmd) {
1071                case FIOSETOWN:
1072                case SIOCSPGRP:
1073                        err = -EFAULT;
1074                        if (get_user(pid, (int __user *)argp))
1075                                break;
1076                        err = f_setown(sock->file, pid, 1);
1077                        break;
1078                case FIOGETOWN:
1079                case SIOCGPGRP:
1080                        err = put_user(f_getown(sock->file),
1081                                       (int __user *)argp);
1082                        break;
1083                case SIOCGIFBR:
1084                case SIOCSIFBR:
1085                case SIOCBRADDBR:
1086                case SIOCBRDELBR:
1087                        err = -ENOPKG;
1088                        if (!br_ioctl_hook)
1089                                request_module("bridge");
1090
1091                        mutex_lock(&br_ioctl_mutex);
1092                        if (br_ioctl_hook)
1093                                err = br_ioctl_hook(net, cmd, argp);
1094                        mutex_unlock(&br_ioctl_mutex);
1095                        break;
1096                case SIOCGIFVLAN:
1097                case SIOCSIFVLAN:
1098                        err = -ENOPKG;
1099                        if (!vlan_ioctl_hook)
1100                                request_module("8021q");
1101
1102                        mutex_lock(&vlan_ioctl_mutex);
1103                        if (vlan_ioctl_hook)
1104                                err = vlan_ioctl_hook(net, argp);
1105                        mutex_unlock(&vlan_ioctl_mutex);
1106                        break;
1107                case SIOCADDDLCI:
1108                case SIOCDELDLCI:
1109                        err = -ENOPKG;
1110                        if (!dlci_ioctl_hook)
1111                                request_module("dlci");
1112
1113                        mutex_lock(&dlci_ioctl_mutex);
1114                        if (dlci_ioctl_hook)
1115                                err = dlci_ioctl_hook(cmd, argp);
1116                        mutex_unlock(&dlci_ioctl_mutex);
1117                        break;
1118                default:
1119                        err = sock_do_ioctl(net, sock, cmd, arg);
1120                        break;
1121                }
1122        return err;
1123}
1124
1125int sock_create_lite(int family, int type, int protocol, struct socket **res)
1126{
1127        int err;
1128        struct socket *sock = NULL;
1129
1130        err = security_socket_create(family, type, protocol, 1);
1131        if (err)
1132                goto out;
1133
1134        sock = sock_alloc();
1135        if (!sock) {
1136                err = -ENOMEM;
1137                goto out;
1138        }
1139
1140        sock->type = type;
1141        err = security_socket_post_create(sock, family, type, protocol, 1);
1142        if (err)
1143                goto out_release;
1144
1145out:
1146        *res = sock;
1147        return err;
1148out_release:
1149        sock_release(sock);
1150        sock = NULL;
1151        goto out;
1152}
1153EXPORT_SYMBOL(sock_create_lite);
1154
1155/* No kernel lock held - perfect */
1156static unsigned int sock_poll(struct file *file, poll_table *wait)
1157{
1158        struct socket *sock;
1159
1160        /*
1161         *      We can't return errors to poll, so it's either yes or no.
1162         */
1163        sock = file->private_data;
1164        return sock->ops->poll(file, sock, wait);
1165}
1166
1167static int sock_mmap(struct file *file, struct vm_area_struct *vma)
1168{
1169        struct socket *sock = file->private_data;
1170
1171        return sock->ops->mmap(file, sock, vma);
1172}
1173
1174static int sock_close(struct inode *inode, struct file *filp)
1175{
1176        /*
1177         *      It was possible the inode is NULL we were
1178         *      closing an unfinished socket.
1179         */
1180
1181        if (!inode) {
1182                printk(KERN_DEBUG "sock_close: NULL inode\n");
1183                return 0;
1184        }
1185        sock_release(SOCKET_I(inode));
1186        return 0;
1187}
1188
1189/*
1190 *      Update the socket async list
1191 *
1192 *      Fasync_list locking strategy.
1193 *
1194 *      1. fasync_list is modified only under process context socket lock
1195 *         i.e. under semaphore.
1196 *      2. fasync_list is used under read_lock(&sk->sk_callback_lock)
1197 *         or under socket lock
1198 */
1199
1200static int sock_fasync(int fd, struct file *filp, int on)
1201{
1202        struct socket *sock = filp->private_data;
1203        struct sock *sk = sock->sk;
1204        struct socket_wq *wq;
1205
1206        if (sk == NULL)
1207                return -EINVAL;
1208
1209        lock_sock(sk);
1210        wq = rcu_dereference_protected(sock->wq, sock_owned_by_user(sk));
1211        fasync_helper(fd, filp, on, &wq->fasync_list);
1212
1213        if (!wq->fasync_list)
1214                sock_reset_flag(sk, SOCK_FASYNC);
1215        else
1216                sock_set_flag(sk, SOCK_FASYNC);
1217
1218        release_sock(sk);
1219        return 0;
1220}
1221
1222/* This function may be called only under socket lock or callback_lock or rcu_lock */
1223
1224int sock_wake_async(struct socket *sock, int how, int band)
1225{
1226        struct socket_wq *wq;
1227
1228        if (!sock)
1229                return -1;
1230        rcu_read_lock();
1231        wq = rcu_dereference(sock->wq);
1232        if (!wq || !wq->fasync_list) {
1233                rcu_read_unlock();
1234                return -1;
1235        }
1236        switch (how) {
1237        case SOCK_WAKE_WAITD:
1238                if (test_bit(SOCK_ASYNC_WAITDATA, &sock->flags))
1239                        break;
1240                goto call_kill;
1241        case SOCK_WAKE_SPACE:
1242                if (!test_and_clear_bit(SOCK_ASYNC_NOSPACE, &sock->flags))
1243                        break;
1244                /* fall through */
1245        case SOCK_WAKE_IO:
1246call_kill:
1247                kill_fasync(&wq->fasync_list, SIGIO, band);
1248                break;
1249        case SOCK_WAKE_URG:
1250                kill_fasync(&wq->fasync_list, SIGURG, band);
1251        }
1252        rcu_read_unlock();
1253        return 0;
1254}
1255EXPORT_SYMBOL(sock_wake_async);
1256
1257int __sock_create(struct net *net, int family, int type, int protocol,
1258                         struct socket **res, int kern)
1259{
1260        int err;
1261        struct socket *sock;
1262        const struct net_proto_family *pf;
1263
1264        /*
1265         *      Check protocol is in range
1266         */
1267        if (family < 0 || family >= NPROTO)
1268                return -EAFNOSUPPORT;
1269        if (type < 0 || type >= SOCK_MAX)
1270                return -EINVAL;
1271
1272        /* Compatibility.
1273
1274           This uglymoron is moved from INET layer to here to avoid
1275           deadlock in module load.
1276         */
1277        if (family == PF_INET && type == SOCK_PACKET) {
1278                static int warned;
1279                if (!warned) {
1280                        warned = 1;
1281                        printk(KERN_INFO "%s uses obsolete (PF_INET,SOCK_PACKET)\n",
1282                               current->comm);
1283                }
1284                family = PF_PACKET;
1285        }
1286
1287        err = security_socket_create(family, type, protocol, kern);
1288        if (err)
1289                return err;
1290
1291        /*
1292         *      Allocate the socket and allow the family to set things up. if
1293         *      the protocol is 0, the family is instructed to select an appropriate
1294         *      default.
1295         */
1296        sock = sock_alloc();
1297        if (!sock) {
1298                net_warn_ratelimited("socket: no more sockets\n");
1299                return -ENFILE; /* Not exactly a match, but its the
1300                                   closest posix thing */
1301        }
1302
1303        sock->type = type;
1304
1305#ifdef CONFIG_MODULES
1306        /* Attempt to load a protocol module if the find failed.
1307         *
1308         * 12/09/1996 Marcin: But! this makes REALLY only sense, if the user
1309         * requested real, full-featured networking support upon configuration.
1310         * Otherwise module support will break!
1311         */
1312        if (rcu_access_pointer(net_families[family]) == NULL)
1313                request_module("net-pf-%d", family);
1314#endif
1315
1316        rcu_read_lock();
1317        pf = rcu_dereference(net_families[family]);
1318        err = -EAFNOSUPPORT;
1319        if (!pf)
1320                goto out_release;
1321
1322        /*
1323         * We will call the ->create function, that possibly is in a loadable
1324         * module, so we have to bump that loadable module refcnt first.
1325         */
1326        if (!try_module_get(pf->owner))
1327                goto out_release;
1328
1329        /* Now protected by module ref count */
1330        rcu_read_unlock();
1331
1332        err = pf->create(net, sock, protocol, kern);
1333        if (err < 0)
1334                goto out_module_put;
1335
1336        /*
1337         * Now to bump the refcnt of the [loadable] module that owns this
1338         * socket at sock_release time we decrement its refcnt.
1339         */
1340        if (!try_module_get(sock->ops->owner))
1341                goto out_module_busy;
1342
1343        /*
1344         * Now that we're done with the ->create function, the [loadable]
1345         * module can have its refcnt decremented
1346         */
1347        module_put(pf->owner);
1348        err = security_socket_post_create(sock, family, type, protocol, kern);
1349        if (err)
1350                goto out_sock_release;
1351        *res = sock;
1352
1353        return 0;
1354
1355out_module_busy:
1356        err = -EAFNOSUPPORT;
1357out_module_put:
1358        sock->ops = NULL;
1359        module_put(pf->owner);
1360out_sock_release:
1361        sock_release(sock);
1362        return err;
1363
1364out_release:
1365        rcu_read_unlock();
1366        goto out_sock_release;
1367}
1368EXPORT_SYMBOL(__sock_create);
1369
1370int sock_create(int family, int type, int protocol, struct socket **res)
1371{
1372        return __sock_create(current->nsproxy->net_ns, family, type, protocol, res, 0);
1373}
1374EXPORT_SYMBOL(sock_create);
1375
1376int sock_create_kern(int family, int type, int protocol, struct socket **res)
1377{
1378        return __sock_create(&init_net, family, type, protocol, res, 1);
1379}
1380EXPORT_SYMBOL(sock_create_kern);
1381
1382SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
1383{
1384        int retval;
1385        struct socket *sock;
1386        int flags;
1387
1388        /* Check the SOCK_* constants for consistency.  */
1389        BUILD_BUG_ON(SOCK_CLOEXEC != O_CLOEXEC);
1390        BUILD_BUG_ON((SOCK_MAX | SOCK_TYPE_MASK) != SOCK_TYPE_MASK);
1391        BUILD_BUG_ON(SOCK_CLOEXEC & SOCK_TYPE_MASK);
1392        BUILD_BUG_ON(SOCK_NONBLOCK & SOCK_TYPE_MASK);
1393
1394        flags = type & ~SOCK_TYPE_MASK;
1395        if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1396                return -EINVAL;
1397        type &= SOCK_TYPE_MASK;
1398
1399        if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1400                flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1401
1402        retval = sock_create(family, type, protocol, &sock);
1403        if (retval < 0)
1404                goto out;
1405
1406        retval = sock_map_fd(sock, flags & (O_CLOEXEC | O_NONBLOCK));
1407        if (retval < 0)
1408                goto out_release;
1409
1410out:
1411        /* It may be already another descriptor 8) Not kernel problem. */
1412        return retval;
1413
1414out_release:
1415        sock_release(sock);
1416        return retval;
1417}
1418
1419/*
1420 *      Create a pair of connected sockets.
1421 */
1422
1423SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
1424                int __user *, usockvec)
1425{
1426        struct socket *sock1, *sock2;
1427        int fd1, fd2, err;
1428        struct file *newfile1, *newfile2;
1429        int flags;
1430
1431        flags = type & ~SOCK_TYPE_MASK;
1432        if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1433                return -EINVAL;
1434        type &= SOCK_TYPE_MASK;
1435
1436        if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1437                flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1438
1439        /*
1440         * Obtain the first socket and check if the underlying protocol
1441         * supports the socketpair call.
1442         */
1443
1444        err = sock_create(family, type, protocol, &sock1);
1445        if (err < 0)
1446                goto out;
1447
1448        err = sock_create(family, type, protocol, &sock2);
1449        if (err < 0)
1450                goto out_release_1;
1451
1452        err = sock1->ops->socketpair(sock1, sock2);
1453        if (err < 0)
1454                goto out_release_both;
1455
1456        fd1 = get_unused_fd_flags(flags);
1457        if (unlikely(fd1 < 0)) {
1458                err = fd1;
1459                goto out_release_both;
1460        }
1461        fd2 = get_unused_fd_flags(flags);
1462        if (unlikely(fd2 < 0)) {
1463                err = fd2;
1464                put_unused_fd(fd1);
1465                goto out_release_both;
1466        }
1467
1468        newfile1 = sock_alloc_file(sock1, flags, NULL);
1469        if (unlikely(IS_ERR(newfile1))) {
1470                err = PTR_ERR(newfile1);
1471                put_unused_fd(fd1);
1472                put_unused_fd(fd2);
1473                goto out_release_both;
1474        }
1475
1476        newfile2 = sock_alloc_file(sock2, flags, NULL);
1477        if (IS_ERR(newfile2)) {
1478                err = PTR_ERR(newfile2);
1479                fput(newfile1);
1480                put_unused_fd(fd1);
1481                put_unused_fd(fd2);
1482                sock_release(sock2);
1483                goto out;
1484        }
1485
1486        audit_fd_pair(fd1, fd2);
1487        fd_install(fd1, newfile1);
1488        fd_install(fd2, newfile2);
1489        /* fd1 and fd2 may be already another descriptors.
1490         * Not kernel problem.
1491         */
1492
1493        err = put_user(fd1, &usockvec[0]);
1494        if (!err)
1495                err = put_user(fd2, &usockvec[1]);
1496        if (!err)
1497                return 0;
1498
1499        sys_close(fd2);
1500        sys_close(fd1);
1501        return err;
1502
1503out_release_both:
1504        sock_release(sock2);
1505out_release_1:
1506        sock_release(sock1);
1507out:
1508        return err;
1509}
1510
1511/*
1512 *      Bind a name to a socket. Nothing much to do here since it's
1513 *      the protocol's responsibility to handle the local address.
1514 *
1515 *      We move the socket address to kernel space before we call
1516 *      the protocol layer (having also checked the address is ok).
1517 */
1518
1519SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
1520{
1521        struct socket *sock;
1522        struct sockaddr_storage address;
1523        int err, fput_needed;
1524
1525        sock = sockfd_lookup_light(fd, &err, &fput_needed);
1526        if (sock) {
1527                err = move_addr_to_kernel(umyaddr, addrlen, &address);
1528                if (err >= 0) {
1529                        err = security_socket_bind(sock,
1530                                                   (struct sockaddr *)&address,
1531                                                   addrlen);
1532                        if (!err)
1533                                err = sock->ops->bind(sock,
1534                                                      (struct sockaddr *)
1535                                                      &address, addrlen);
1536                }
1537                fput_light(sock->file, fput_needed);
1538        }
1539        return err;
1540}
1541
1542/*
1543 *      Perform a listen. Basically, we allow the protocol to do anything
1544 *      necessary for a listen, and if that works, we mark the socket as
1545 *      ready for listening.
1546 */
1547
1548SYSCALL_DEFINE2(listen, int, fd, int, backlog)
1549{
1550        struct socket *sock;
1551        int err, fput_needed;
1552        int somaxconn;
1553
1554        sock = sockfd_lookup_light(fd, &err, &fput_needed);
1555        if (sock) {
1556                somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn;
1557                if ((unsigned int)backlog > somaxconn)
1558                        backlog = somaxconn;
1559
1560                err = security_socket_listen(sock, backlog);
1561                if (!err)
1562                        err = sock->ops->listen(sock, backlog);
1563
1564                fput_light(sock->file, fput_needed);
1565        }
1566        return err;
1567}
1568
1569/*
1570 *      For accept, we attempt to create a new socket, set up the link
1571 *      with the client, wake up the client, then return the new
1572 *      connected fd. We collect the address of the connector in kernel
1573 *      space and move it to user at the very end. This is unclean because
1574 *      we open the socket then return an error.
1575 *
1576 *      1003.1g adds the ability to recvmsg() to query connection pending
1577 *      status to recvmsg. We need to add that support in a way thats
1578 *      clean when we restucture accept also.
1579 */
1580
1581SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
1582                int __user *, upeer_addrlen, int, flags)
1583{
1584        struct socket *sock, *newsock;
1585        struct file *newfile;
1586        int err, len, newfd, fput_needed;
1587        struct sockaddr_storage address;
1588
1589        if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
1590                return -EINVAL;
1591
1592        if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
1593                flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
1594
1595        sock = sockfd_lookup_light(fd, &err, &fput_needed);
1596        if (!sock)
1597                goto out;
1598
1599        err = -ENFILE;
1600        newsock = sock_alloc();
1601        if (!newsock)
1602                goto out_put;
1603
1604        newsock->type = sock->type;
1605        newsock->ops = sock->ops;
1606
1607        /*
1608         * We don't need try_module_get here, as the listening socket (sock)
1609         * has the protocol module (sock->ops->owner) held.
1610         */
1611        __module_get(newsock->ops->owner);
1612
1613        newfd = get_unused_fd_flags(flags);
1614        if (unlikely(newfd < 0)) {
1615                err = newfd;
1616                sock_release(newsock);
1617                goto out_put;
1618        }
1619        newfile = sock_alloc_file(newsock, flags, sock->sk->sk_prot_creator->name);
1620        if (unlikely(IS_ERR(newfile))) {
1621                err = PTR_ERR(newfile);
1622                put_unused_fd(newfd);
1623                sock_release(newsock);
1624                goto out_put;
1625        }
1626
1627        err = security_socket_accept(sock, newsock);
1628        if (err)
1629                goto out_fd;
1630
1631        err = sock->ops->accept(sock, newsock, sock->file->f_flags);
1632        if (err < 0)
1633                goto out_fd;
1634
1635        if (upeer_sockaddr) {
1636                if (newsock->ops->getname(newsock, (struct sockaddr *)&address,
1637                                          &len, 2) < 0) {
1638                        err = -ECONNABORTED;
1639                        goto out_fd;
1640                }
1641                err = move_addr_to_user(&address,
1642                                        len, upeer_sockaddr, upeer_addrlen);
1643                if (err < 0)
1644                        goto out_fd;
1645        }
1646
1647        /* File flags are not inherited via accept() unlike another OSes. */
1648
1649        fd_install(newfd, newfile);
1650        err = newfd;
1651
1652out_put:
1653        fput_light(sock->file, fput_needed);
1654out:
1655        return err;
1656out_fd:
1657        fput(newfile);
1658        put_unused_fd(newfd);
1659        goto out_put;
1660}
1661
1662SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
1663                int __user *, upeer_addrlen)
1664{
1665        return sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0);
1666}
1667
1668/*
1669 *      Attempt to connect to a socket with the server address.  The address
1670 *      is in user space so we verify it is OK and move it to kernel space.
1671 *
1672 *      For 1003.1g we need to add clean support for a bind to AF_UNSPEC to
1673 *      break bindings
1674 *
1675 *      NOTE: 1003.1g draft 6.3 is broken with respect to AX.25/NetROM and
1676 *      other SEQPACKET protocols that take time to connect() as it doesn't
1677 *      include the -EINPROGRESS status for such sockets.
1678 */
1679
1680SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
1681                int, addrlen)
1682{
1683        struct socket *sock;
1684        struct sockaddr_storage address;
1685        int err, fput_needed;
1686
1687        sock = sockfd_lookup_light(fd, &err, &fput_needed);
1688        if (!sock)
1689                goto out;
1690        err = move_addr_to_kernel(uservaddr, addrlen, &address);
1691        if (err < 0)
1692                goto out_put;
1693
1694        err =
1695            security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
1696        if (err)
1697                goto out_put;
1698
1699        err = sock->ops->connect(sock, (struct sockaddr *)&address, addrlen,
1700                                 sock->file->f_flags);
1701out_put:
1702        fput_light(sock->file, fput_needed);
1703out:
1704        return err;
1705}
1706
1707/*
1708 *      Get the local address ('name') of a socket object. Move the obtained
1709 *      name to user space.
1710 */
1711
1712SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr,
1713                int __user *, usockaddr_len)
1714{
165YSCALef="ndn1, )
164ile" class="sref">newfile);
1696        if (err)

7ock->sk-> href="+code=sockfd_lookup_light" class="sref">sockfd_lookup_light(7name="L1627">1620        if ();
newsock);
;
1695            <7="sref">pu7_unused_fd(err<-> href="+code=sockfd_loo+code=sock" class="sref">sock, (struct 1623           7    sock_release(newsock);
1696        if (err)
1697                goto out_put;
1625  7     7
1626
1627        sock, (struct security_so7ket_a73err, &ECONNABORTED;
1640    >
SYSCALL_DEFINE3(, (struct 7sock, 1708errfd_install(newfd, acc7pt);
1650        err = newfd;
17ef="+code=7ock" class="sref">sock16521653        err<7a> &l73t.c#L1664" id="L1664" class="li7ddr) {7ops->sys_accept4(address,
}
1704        return err;
1666}
1706
16374ent">/*
/*
err =7
709">1709 *      name to user space.
1710 */
16421712SYSCALL_DEFINE3(getsocknameu7eer_so struct upeer_addrlenusockaddr,
1643<7a>   74truct file *newfile;
165YSCALef="ndn1;
 *      oth7/a>       7/* 7ile f7ags are not inherited via acct.c#L1668" id="r,
164ile" class="sref">newfile);
1696        if (err)
 *      oth7/ id="L1637>
out;
->1649        unlikely<+code=newsock" class="sref">newsock);
;
ne7file<75 class="sref">move_addr_to_user(&->1642       net/socket.c#L1650" id="L1650" class="line" name="L1650">1650        err = newfd;
17">out_put<7a>:
err<->1653" class="line" name="L1653">1653        fput7light(fput_7eeded75t.c#L1665" id="L1665" class="l7t/socket.c7L1655" id="L1655" class="7ine" 75tname" class="sref">gsref">unlikely<+code=newsock" class="sref"1665" id="L1665" class="l7t>;
ou75ref="net/socket.c#L1637" newsock);
1696        if (err)
1697                goto out_put;
fput<7a>(err = 17>newfile);

1626
16587/a>        out_fd;
err, &ECONNABORTED;
1640    >

SYSCALL_DEFINE3(, (struct fd, st76 name="L1642">16421650        err = newfd;
17s="sref">s7ckaddr upe7r_addrlen)
1653        1664{
1665        ret7rn fd, sys_accept4(1666}
1667t>upeer_add/s" 
sys_accept4(1668/*
up id="L1667"dataerr * rsys_accept4(16587"L1669">1669 *      Attempt to connect to lass="line" ine" name="L1706">1706
1670 *      is in user spacclass="comment">/*

         socket object6L1650">1650      endto;
1709 *      name to voidame="L1712">1712Sbuff href="+code=SYbuffass="sref">newfd;size_c#L1668" id="rupe7href="net/socket.c#L1673"7id="L77 0)
1617      user space.
1710 */1674security_sockess="line" name="L1680">1FINE3(getsockname->1677<77ref="net/sock"+code=__user" class="srefa href="+code=usockaddr" class="sref">usockaddr,
newfile;
1679
1683586" class="line" name="L17n658">16587(newfile;
fd, s7ruct 7a href="+code=sockaddr" class="sref"i166ef="+code=out" ci166eref">newfile;
165YSCALef="ndn11682{
165YSCALef="ndn1upe7ref">sock;
getsockname1684        str7ct security_socke#L1695" id="L16640" class="line" name="L ="+code=fput_needINT_MAX" class="line" INT_MAXname="L1640">165YSCALef="ndn11655        rt.c#L1668" id="r,
164ile" class="sref">newfile);
1696        if (err)
165YSCALef="ndn1sock
fderr  href="+code=sockfd_lookup_light" class="sref">sockfd_lookup_light(7          7  goto 1708er7 = ;
;
buff href="+code=SYbuffass=">sockfd_lookup_light(7 line" nam7sref">uservaddr, ;
sockfd_lookup_light(7 span>
address);
a href="net/socdn1NULsocket.c#L1588" NULs
sockfd_lookup_light(7 "line" na7>        if (/a>);
        if (err;
sock_release(NULsocket.c#L1588" NULs
sockfd_lookup_light(7 OTE: 10037class="sref">sockaddr7*)&am79me="L1655">1655        rmsgt/socket.c#L171msg1683.newfile;
sockfd_lookup_light(7 1676" cla7ss, addrlen);
;
640" class="line" msg_640a href=0">sockfd_lookup_light(8"L1699">1689        err = -fput_needed);
1FINE3(1689  8"+code=add8len" class="sref">addrlen8/a>,
80class="sref">out_fd;
16908);
sock, (struct out_put<8a>:
1642;
;
out_put;
, (struct err<->ddrlen);
;
640" class="line" msg_640a href=ine" name="L1680">1FINE3(errfput_nee8ed);
err = connect(out:
gsref">unlikely1617     |f=ine" name="L168MSG_DONTWAITame="L1617">161MSG_DONTWAITname/a>, (struct , 17080lass="sref">addrlen);
;
161msg_ce" na href=ine" name="L168ce" name="L1617">1617    /a>, (struct err, &1650      L1697">1697             href="net/socket.c#Lmsgt/socket.c#L171msg1683m.c#L1640" id="L1640" class="line" name="Lne" name="L1689">1689  8"net/socke8.c#L1708" id="L1708" clas8="lin8" name="L1708">1708 *      Get the local a8dress8('name') of anstall(newfd, 1711<8a>
);
1650        err = newfd;
18/a>, int, 8a href="+code=fd" class="8ref">812" class="line" name="L1652">1652sockaddr 1653        1713       8     81t.c#L1664" id="L1664" class="li8="line" na8e="L1714">1714{
, sys_accept4(}
1706
1707/*
8ock->17081620        if (1650      enda href="+code=eren">newfi709 *      name to voidame="L1712">1712Sbuff href="+code=SYbuffass="sref">newfd;size_c#L1668" id="r1617    7" class="line" name="L1688/a>, int, 8le);
pu8_unused_fd(164ile" class="sref">newfi class="sref">Sbuff href="+code=SYbuffass="sref">newfd;640" class="line" name="L1640">1640   ce" name="L1617">1617      "net/socdn1NULsocket.c#L1588" NULs
1625  8     82ref="+code=sys_accept4" class="sref">sys_accept4(}
upeer_add/of7t>u="sref">sys_accept4(security_so8ket_a836">1666}
upbuffer>err1667t>u="sref">sys_accept4(8sock, /*
1706
err *      Attempt to conneclass="comment">/*
acc8ptaddrl8ef="+code=8ock" class="sref">sock         socket object6L1650">1650     ascvfrom653        ascvfrom>newfi709 *      name to voidame="L1712">1712Subuf href="+code=SYubufass="sref">newfd;size_c#L1668" id="rerr<->unsigned17091617      user space.
1710 */err<8a> &l83 0)
1712S0">1FINE3(getsockname8ddr) {8ops->usockaddr,
address,
newfile;
newfile;
163841name" class="+code=__user" class="sref>file *newfile;
3" id="L1683" class="line" name="L1683">1683        struc3">2ine" name="L1683">2="L1586" class="line" name="L18 ref="+cod83" id="L1683" classket.c#L1640" id="L1640" class="line" name="L1640">165YSCALef="ndn1<8"net/socke8.c#L1642" id="L1642" clas8="lin84 href="+code=file" class="sref8href="+cod8=upeer_sockaddr" class="s8ef">u84socket.c#L1683ef="+code=sock_all ize#L1668" id="rgetsockname8drlen" cla8s="sref">upeer_addrlen165YSCALef="ndn1<8643" class8"line" name="L1643">1643<8a>   84ref="+code=sockaddr_storage" class="sref">sockaddr_storage address;
1685        int err, 18a>        8               goto 1686
sock = sockfd_lookup_light(8/a>       8/* 8ile f8ags ar>sockfd_lookup_light(8/ id="L1638>
out);
;
);
sg_contropa href="net/socdn1NULsocket.c#L1588" NULs
sockfd_lookup_light(849">1649        sockfd_lookup_light(8href="+cod8=newfile" class="sref">ne8file<85>);
address);
        if (out_put<8a>:
/a>);
;
(;
ubuf href="+code=SYubufass=586" class="line" name="L18"43" class8eeded" class="sref">fput_8eeded85">sock_release(a href=   goto out_put;
, (struct 1655        rmsgt/socket.c#L171msg1683.newfile;
640" class="line" msg_640a href=aizeofL1688" id="L1688="nec#L1689" id="L1689" class="line" name="L1689">1689  8t>;
ou85="sref">sock1650        err = connect(fput<8a>(err a>1617     |f=ine" name="L168MSG_DONTWAITame="L1617">161MSG_DONTWAITname/a>, (struct out);
err, &1650      L1697">1697             href="net/socket.c#Lmsgt/socket.c#L171msg1683m.c#L1640" id="L1aize#L1668" id="r1617    7/a>, (struct 1649        ;
)
<=ine" name="L168="net/socket.c#L1711" ids="eOEXEC | ->fd, st86 name="L1642">16422ine" name="L1683">2="L1f="+code=fput_needed" class="srBORTED" class="sref">ECONNABORTED;
->err<->ttttttttttttttttttttttttt55        rmsgt/socket.c#L171msg1683.newfile;
640" class="line" msg_640a hrcomment"> */S0">1FINE3(, (struct )
2="L1fass="line" name="L1690">16908e" name="L8664">1664{
security_socke">out);
err, &2ine" name="L1683">2="L1586" class="line" name="L18"/socket.c81665">1665        ret8rn 161664" id="L1664" class="li8+code=fd" 8lass="sref">fd,  *      oth8.c#L1666" 8d="L1666" class="line" na8e="L1871650        err = newfd;
18.newfile1668sockaddr *)&16588"L1669">16691653        1670sys_accept4(upe8href="net/socket.c#L1673"8id="L87 0)
<1706
1674/*
1678<87ref=" class="sref">S0smme=k * *      name to voidame="L1712">1712ubuf href="+code=SYubufass="sref">newfd;size_c#L1668" id="rerr = 1617    7" class="line" name="L1688name="L1678">1679
16588( = newfd;size#L1668" id="r1617      "net/socdn1NULsocket.c#L1588" NULs
 | fd, s8ruct 88ment"1664" id="L1664" class="li8nspan>
,
1682{
sys_accept4(upe8ref">sock;
sys_accept4(1684        str8ct up id="m hr p3r="Ltd="for lass="line" sito sor+cou+ine" name="L1706">1706
/*
 *      oth8a href="+c8de=fd" class="sref">fd | 1650      09" idrpt#L1668" id="r *      name to 709S0">1FINE3(+cova);levfpme to 709+cova)span class="rptascvmsgt/sockeef="=getsockname"/ckeef=line" name="L1688name="L1678">1="+code=er8" class="sr7f">er7 = 8a hre8newfilef="+code=op8n658">16588uservad8r, 165YSCALef="ndn1;
a8dress8/a>);
usockaddr,
upe7re8r" class="8ref">err16908e" name="L8664ecurity_so8ket_connect7 clas79">sock8relea89y_socke">out189" class="line" n8L1676" cla8s="/a>, 8ddrlen);
 address;
1685        int err,         9a href="+co8e=err80le9=  ->err = ->1768" id="r<>      L1697">1697             href="net/sock"levfput_needed);levfpme to 709er7 = 9sref"9out_fd;
16908e" name="L8669="net/sock9t.c#L1701" 8d="L180d="L1692" cl9ss="lineeeeeeeee        sock, (struct out_put<8a>9
);
<="L16640" class="linea>);levfpme to 70916908e" name="L8669=6    if (9aef">errerr = -16908e" name="L8669=7    if (9aet_connect7 clas79">sock9= out);
<);
1697             href="net/sock"levfput_needed);levfpme to 709S0">1FINE3(+cova);levfpme to 709+cova)span 0">16908e" name="L8669=8    if (9ackaddr7*)&am79me="L19class9"sref">gsref">unlikelyke">out);
<);
out_put<8a>9
9    if (9a="+code=ad7rlen"7class="9ref">90a> = out_put<8a>9#L1707" id9"L1707" cla8s="li81err = -16908e" name="L8669L1708" id=9L1708" clas8="lin8" name=9L170891             );
<);
err = err)
1697             href="net/sock"levfput_needed);levfpme to 709S0">1FINE3(+cova);levfpme to 709+cova)span 0">16908e" name="L8669*      Get9the local a8dress8('n9meƇut_fd;
out);
<);
out_put<8a>9);
newfd, 1711<8a>9ref="+code9fd" class="8ref">812" cla9s="li9116421650        err = newfd;
17s="sref">s7ck9ref">socka9dr 1719       8     81t.c#L1964" i91ss="line" name="L1653">1653        1719{
, (upe8re9e=newsock"9class0f the8conne82" name9"L1709">1707sys_accept4(1706
   9    if (/*
addrl8ef="+code=8oc9/a>);
      "  socket object5L1650">1650      09" idrpt#L16g8" id="r *      name to 709);
S0">1FINE3(+cova);levfpme to 709+cova)span clas12S0">1FINE3(+coef="=getsockname"/ckeef=line" name="L1688name="L1678">923" id="L1923" class="8ine" 82t.c#L1964" i9="L166ef="+code=op8165YSCALef="ndn1;
1625  8     82ref="+9ode=s92+code=__user" class="srefa href="+code=usockaddr" class="sref">usockaddr,
}
<9 href92ent"> *      oth8a href="+c8de9ass="sref"9security_so8ket_a836">1669}93erited via acct.c#L1668" id="r,
164ile" class="sref">newfile);
1696        if (err17s="sref">s7ck9k, /9->1649 9r" class="9ref">err 9     93class="sref">unlikely<+code=newsock" class="sref">newsock);
>17gr7091697             href="net/sock"levfput_needed);levfpme to 70917s="sref">s7ck9k id="L1629="sref">acc8pt(&->17s="sref">s7ck9ka>);
socksock, (struct out_put<8a>9upe7re9err" class9"sref">err<8a> &l83 0)
"L16640" class="linea>);levfpme to 70916908e" name="L8669href="net/9ocket.c#L1686" id83t.c#L 9truct93y_socke">out);
err, &16908e" name="L8669hme="L16259t;gsref">unlikelyke">out1697             href="net/sock"levfput_needed);levfpme to 709S0">1FINE3(+cova);levfpme to 709+cova)span 0">16908e" name="L8669class="sre9">address,
);
ef">unlikelyke">outout_put<8a>9ref="+code9len" class=8sref"840ef="n9t/soc94rr = out_put<8a>9lass="line9 name="L1638">163841name"9class94             );
err, &16908e" name="L8669  goto ;
ouamsgt/socket.c#sockerr" class="sref">err = err)
1697             href="net/sock"levfput_needed);levfpme to 709S0">1FINE3(+cova);levfpme to 709+cova)span 0">16908e" name="L8669href="+cod9=move_addr_8o_use843lass=9sref"94s="lineeeeeeeee        unlikelyke">outout_put<8a>9ra>);
1652f="+code=newfd" class="sref">newfd, 1711<8a>9eer_sockad9r" class="s8ef">u84socket9c#L1694rr<->ddrlen);
<1650" id="L1650" class="line" name="L1650">1650        err = newfd;
17s="sref">s7ck9sref">upee9_addrlenfput_nee8ed9ne" name="91643">1643<8a>   84ref="+9ode=s9ckaddr_storagee="L1653">1653        1686<4" class="li8">fput_nee8ed9nlass="sre9#L1645" id=8L164584="sref9>sock94ent"> *      oth8a href="+c8de9an class="9omment">/* 8ile f8ags ar>9ockfd95>1707upe8re9a href="ne9/socket.c#L8649" 85"sref"9out1706
 = 9a hre95ttempt to conneclass="comment">/*
ne8file<85>);
addrl8ef="+code=8oc9="net/sock9t.c#L1652" 8d="L185ref">a9dress95" name socket object6653      683">2="L1586" c6653      6>         *      name to 70916908e" name="L8669
);
ef="+code=op749">1649 9ht(165YSCALef="ndn1;
fput_8eeded85">sock9relea9e(usockaddr,
195" class="line" n8L1676" cla8s=9code=out_f9" class="sr8f">ou85="sref9>sock95drlen);
 address;
1685        int err, 17s="sref">s7ck9ut" class=9sref">fput<8a>( ->err = -1697             href="net/sock"levfput_neededhow name to 70917s="sref">s7ck9u     ;
->17s="sref">s7ck9err = -err = err)
1697             href="net/sock"levfput_neededhow name to 70917s="sref">s7ck9u"net/sock9"sref">fd, st86 name=9L16429>16422ine" name=" class="line" name="L1650">1650        err = newfd;
17s="sref">s7ck9ddr 1653        16649
1665196" class="line" n8L1676" cla8s=9s="sref">f9, syshelpful macrose" sigettingf7t>u="sref">sys_ac 32/64 bit>/*
17071706
1668<9a>sock9ddr/*
1669<9a>1653    COMPAT_MSG ECONNABORTEDECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" ?ket.c#Lmsgt/socket.c#L171msg1683m.c#L1640" id=##_.c#pata> = ECONNABORTED = ECONNABORTED17s="sref">s7ck91670">16709/a>1653    COMPAT_NAMELEN 2ine" name=COMPAT_MSG 640a hrcomment"> */17s="sref">s7ck91"net/sock9t.c#L1671" 8d="L187 href=9+code9file" #defs="53">1653    COMPAT_FLAGS 2ine" name=COMPAT_MSG 161msg_ce" na href=ine" name="he="L1651">17s="sref">s7ck91dr upe7re9f="net/soc9et.c#L1673"8id="L87 0)
<<9 href9"net/s class="srefa href="+cused_39" class="line" nam/aused_39" cla;1674newfile;
gsref">>f9"L1676">1678<87ref=" 9lass=9sref">}ight" class=7e" name="L7669otocols th9t take time8to co88class=9sref"98ookup_light(8/ id="L1638>
9679
-&g9;     class="srefa href="+code=usockaddr" class="sref">usockaddr,

newfile;
ubuf href="+coL171msg1683m.c#L1640" id="_light(8/ id="L1638>
9669">1669<9+code=conne8t" cl88/a> = 9a hre98ut_fd;

newfile;
ubuf href="+coL17oket1msg_ce" na href=inket id=/s>1617    7" class="line"_light(8/ id="L1638>
96670">16709">fd, s8ruct 88ment"1964" i98s="lineeeeeeeee        ubuf href="+codsed_39" class="line" nam/aused_39" cla;17s="sref">s7ck9,
pu8_u9L1682">1689{
(new.c#pat_.c#L17a>;
ubuf href="+coL17_.c#pat1msg_ce" na href=in.c#patput_ne0">16908e" name="L8669">sock9
new.c#pat_.c#L17a>;
ubuf href="+coL171msg1683m.c#L1640" id=ight" class=7e" name="L7669o">1674newfile;
, (struct newfile;
;
],/a>ubuf href="+cot" ci161683.newfile;
ref="+code=ECONNAet" sta="net/socket.c#L1t" sta="a>;
a href="+cod8t/socket.c8L19L="sref">f9="+code=soc8" cla88an cla9s="co98drlen);
<>new..c#L17a>;
) + 20] href="+cod8t/socket.c8L19fd" class=9sref">fd 99rr = (     ,lpan c>     ="L1688="nec#L1689" i__ass="l_id="r;
))))a href="+cod8t/socket.c8L196="linsL169="+code=out7 clas79 name=9L170899             ocket.c#L1706" iSend aac 20 isid="L>sysipv6_pktinfope">/*
er7 = 9a hre992rlen);
<>ubuf href="+coct)_e=SYubufass="sref"ct)_e=Sa>;
ref="+code=ECONNAect);levfpme to 709ct)a>;
a href="+cod8t/socket.c8L196670">16709r, ;
a href="+cod8t/socket.c8L196
a9dress99ile" class="sref8="line" na8e=9      if (9a href="+co7e=err7 class=9sref"99a>);
err = -ECONNABORTEDEFAULTa>;
a href="+cod8t/socket.c8L196>sock9ref">errECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" f="+code=soc8="sref">pu8_u9ecurity_so9ket_connect7 clas79">sock9relea99y_socke">outnewget_.c#pat_.c#L17>        ubuf href="+coL17_.c#pat1msg_ce" na href=in.c#patput_)he="L1651">17s="sref">s7ck9 1686" id=9ockaddr7*)&am79me="L1955">199sref">gsref">unlikelyke">outECONNABORTEDEFAULTa>;
a href="+cod8t/socket.c8L196="sref">f9f="+code=ad7rlen"7class="9ref">9ddrlen);
<}gelsen="L16640" class="licopy_1685ode=SYSCALL_DEFINE"ncopy_1685ode=S>        ubuf href="+coL171msg1683m.c#L1640" id="Ld="L168 class="srefa href="+c.c#L171msghneref">newfile;
))he="L1651">17s="sref">s7c20a>       20a>  code=ad7rlen"7class=20a> >20a>ref">gsref">unlikelye="L165-6640" class="liEFAULTf">ECONNABORTEDEFAULTa>;
a h/pre>ECONNAdolen"    bf/b6/d15450fba4d3b53f435fcc10ef9acbc5f8d2_3/20a> >="L1651">17s="sref">s7c20a1       20a"+code=out7 clas79 name20a"+>20a1le" class="sref8="line" na8e20a2       20a class="sr7f">er7 =20a c>20a2.c#L1695" id="L16640" class="liL17oket1msg_ce" na href=inket id=a> = ;
" f="+code=soc8="sref">pu8_20a3       20a, err = -ECONNABORTEDEme/SIZEa>;
a href="+cod8t/socket.c8L20a4       20a=address" 7lass=7sref">20a=a>20a1642 = 17s="sref">s7c20a5       20a href="+co7e=err7 class20a h>20arr<->ttttttttttttttttttttttockfd_lookup_light" class="sref">sockfd_lookup_light(8/a>       8<20a6       20aef">errerr = -ECONNABORTEDENOMEMookup_light(8/a>       8<20a7       20aet_connect7 clas79">soc20aet>20ay_socke">outubuf href="+cot" ci161683.newfile;
ref="+code=ECONNAekmallo ci166eref">newfkmallo >         = newfile;
)"_light(8/ id="L1638>20a8       20ackaddr7*)&am79me="L20ack>20asref">gsref">unlikelyke">outGFP_KERNE"a>;
)p_light(8/a>       8<20a9       20a="+code=ad7rlen"7class=20a=">20at.c#L1637" newsock;
he="L1651">17s="sref">s7c201>       20"L1707" cla8s="li8120"Lr<->ttttttttttttttttttttttockfd_lookup_light" class="sref">sockfd_lookup_light(8/a>       8<2011       20L1708" clas8="lin8" name20L17>20"             4" class="li7"/socket.c7120"2       20the local a8dress8('20the>20"lass="line" name8href="+cod8a20"3       20t/socket.c#81712"81>);
<20t/s>20"et/socket.c#L1cket.c#L1706" iSend aac Thisiwill also f7t>u="sref"> hre clao ass="l ckecepe">/*
812" cl20fd">20"4.c#L1695" id="L16640" class="lime/aCme/aCOMPATf">ECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" f="+code=soc8="sref">pu8_20"5       20dr 20"rr<->ddrlen);
<1650" id="L1650ss="sref">err = -newfverify_.c#pat_out" >        ubuf href="+cot" ci161683.newfile;
">err, ->ubuf href="+coVERIFY_READss="line" nam/aVERIFY_READa>;
)p_light(8/a>       8<2016       20       8     81t.c#L2020"664" id="L1664gelse href="+cod8">out_put<8a20"7       20{
outubuf href="+coss="sref">err = -newfverify_out" >        ubuf href="+cot" ci161683.newfile;
">err, ->ubuf href="+coVERIFY_READss="line" nam/aVERIFY_READa>;
)p_light(8/a>       8<2018       20ref="+code 8ameso81ref="20ref>20"1686
ubuf href="+coss="sref">err = -16908e" name="L8620"9       20 ct/soommen8len}
20 ct>20"a> = (8/a>       8<202>       20class0f the8conne82" nam20cla>20cl>);
;
need3">2ine" name="L1"sref">err = -(8/a>       8<2021       20 href="+cod8=sk" 82 name20 hr>20c1le" class="sref8="line" na8e2022       20    if (err = -(8/a>       8<2023       20" class="li8e" na82d="L120" c>20cass="sref">addrl8ef="+code=8o20c4       20ef="net/soc8et.c#82,20ef=>20c4.c#L1695" id="L16640" class="liL17oket1msg_ce" na href=inket id=a> = sockfd_lo classINT_MAX" classINT_MAX msg_controp640INT_MAXa>;
he="L1651">17s="sref">s7c2025       20(20crr<->ddrlen);
(8/a>       8<2026       2023" class="8ine" 82t.c#L2023">20ca>);
 = sockfd_lp_light(8/a>       8<2027       20elease" cla8s="sr82t.c#L20ele>20c7.c#L1695" id="L116640" class="lime/aCme/aCOMPATf">ECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" " name="L168="net/socket.cct)_ef="=getsockname"/ct)_ef= ct/" f="+code=soc8="sref">pu8_2028       20>1625  8     82ref="20>16>20csref">gsref">unlikelyamsgt/socket.c#ss="sref">err = -pu8_2029       201627" class8"line82/a>}
20162>20ct.c#L1637" newsock);
"srefa href="+c..c#L17_1685ode=S_.c#pat_to_ass=1msghneref">new..c#L17_1685ode=S_.c#pat_to_ass=>        ubuf href="+coode=err" class="sref">err = ;
"_light(8/ id="L1638>203>       20security_so8ket_a836">1620sec>20seref">gsref">unlikelyke">out;
))a href="+cod8t/socket.c8L20s1       20ref="+code=8ewsoc83ent">20ref>20s             ->17s="sref">s7c20s2       20ref">err20ref>20sut_fd;
(8/a>       8<2033       20="sref">acc8pt20ss="lineeeeeeeee      "i16f="+code=ouct)_e=SYubufass="sref"ct)_e=Sa>;
ref="+code=ECONNAeO17oket1msg_ce" na href=inket id=a> = sookup_light(8/a>       8<2034       20ef">sock20s16422ine" name=ct)_ef="=getsockname"/ct)_ef= ct/needed" class="srBO17oket1msg_ce" na href=inket id=a> = sockfd_lp_light(8/a>       8<2035       20ode=f_flags8 clas83class20ode>20sss="line" nam4gelsen="L16640" class="lict)_ef="=getsockname"/ct)_ef= ct/" f="+code=soc8="sref">pu8_2036       20"sref">err<8a> &l83 0)
<20"sr>20set/sock" name="L1712">"L16640" class="lict)_ef="=getsockname"/ct)_ef= ct/n clas ="L1688="nec#L1689" ict);levfpme to 709ct)a>;
)) f="+code=soc8="sref">pu8_2037       20ocket.c#L1686" id83t.c#L20ock>20sy_socke">out);
err, ct)_e=SYubufass="sref"ct)_e=Sa>;
ref="+code=ECONNAesref_kmallo ci166eref">newfsref_kmallo >        err = GFP_KERNE"a>;
)p_light(8/a>       8<2038       20t;gsref">unlikelyke">out<>"L16640" class="lict)_e=SYubufass="sref"ct)_e=Sa>;
rehreNULsocket.c#L1588" NULs
->(8/a>       8<2039       20">address,
a>20st.c#L1637" newsock);
ef">unlikelyockfd_lookup_light" cla_16eet" ci161683.newfilcla_16eet" ookup_light(8/a>       8<204>       20len" class=8sref"840ef="20len>20le.c#L1637" newsock163841name20 na>20l             err = -ECONNABORTEDEFAULTa>;
a href="+cod8t/socket.c8L20l2       20ref="+code=8ut_fd84class20ref>20lclass="sref">unlikelyupe8r20l3       20=move_addr_8o_use843lass20=mo>20l" nameef="net/sket.c#Lenderppppppppppppppppp* Ca hrul! Befo7"r"ois, f=inketa> = a href=0">s ef=0ainr a="Ltd=pointer06">1706
u84socke20r" >20l_accept4" class="sref">sys_ppppppppppppppppp* checkingffalls ne" nonr"ois06">1706
/*
1643<8a>   84ref="20164>20ly_socke">out        ;
"_light(8/ id="L1638>2048       20 goto gsref">unlikelyke">out1712ubuf href="+coL17oket1msg_ce" na href=inket id=a> = sooku"_light(8/ id="L1638>2049       20#L1645" id=8L164584="sre20#L1>20lt.c#L1637" newsock);
ef">unlikelyke"6640" class="lict)_ef="=getsockname"/ct)_ef= ct/"h_light(8/a>       8<205>       20omment">/* 8ile f8ags ar20omm>20omt_fd;
;
a href="+cod8t/socket.c8L2051       20/socket.c#L8649" 85"sref20/so>20o              = sookuref="+code=ECONNAect)_e=SYubufass="sref"ct)_e=Sa>;
a href="+cod8t/socket.c8L2052       20ef="+code=f8_inst85/a> =20ef=>20oclass="sref">4" class="li7"/socket.c712053       20s="sref">ne8file<85>);
<20s=">20oet/socket.c#L1+code=err" claL17oket1msg_ce" na href=inket id=a> = 161msg_ce" na href=ine" name="ref="+code=ECONNAe7">1617    7" class="linea href="+cod8t/socket.c8L2054       20t.c#L1652" 8d="L185ref">20t.c>20oile" class="sref8="line" na8e20o5       20et/socket.c8L165385class20et/>20oss="line" namk_all="net/socket.csockaddr_storage  = newfd = 161msg_ce" na hrefne" name="re="L168="net/socket.cO_NONBLOCK1msg_ce" na hreO_NONBLOCK;(8/a>       8<2056       20ref="+code=8ock" 85ref="20ref>20oet/sock"+code=sock_all ize#L1668" idL17oket1msg_ce" na href=inket id=a> = 161msg_ce" na href=ine" name="r|ef="+code=ECONNAeme/aDONTWAITf">ECONNABORTEDme/aDONTWAITlinea href="+cod8t/socket.c8L2057       20sref">fput_8eeded85">soc20sre>20oy_socke">out<upe8r2058       2055" class="8ine" 85me="L2055">20o id="L1704" claclass="commennnnnnnnn* Ifr"ois isidps"Lf=i() and currcom destinae hav="sref">isid7(upe8r2059       20" class="sr8f">ou85="sre20" c>20onet/socket.c#L1706" iSend annnnnnnnn* previously succ="linv="sref", omitiaskingfLSM"srpts necise docept4(upe8r206>       20sref">fput<8a>(20sret/socket.c#L1706" iSend annnnnnnnn* used_39" claa> = 87=oref=>isiinitializinvkfdUINT_MAX sor"oat p3r=first>/*
20s
nevtd="atches06">1706
20sttempt to conneclass="commennnnnnnnn*">/*
 = fd, st86 name20"sr>20s1642 =  = 640a hrcomment"> */
20srr<->ddrlen"net/socket.c#L1memcmp msg_640a hremcmp>    err,  =  = (8/ id="L1638>2066       20
 = pu8_2067       20
20sy_socke">outubuf href="+coss="sref">err = -newfsref_ops"L17_nos" >        err;
)p_light(8/a>       8<2068       20        ret8rn 20ssref">gsref">unlikelyockfd_lookup_light" cla_16eect);levfpme to 709cla_16eect)a>;
a href="+cod8t/socket.c8L2069       20,        20s="line" na8e="L187err = -newfsref_ops"L17>        err;
)p_light(8/a>       8<2071       20a>soc20a><>20s             ocket.c#L1706" iSend aac>/*
 =20a><>20sttempt to conneclass="commennnnnnnnn* Ifr"ois isidps"Lf=i() and dps"ingf7o currcom destinae hav="sref">wascept4(upe8r2073       20/a>>20s" nameef="net/sket.c#Lenderppppppppp* succ=ssful, re1706
/*
20sss="line" namk_all="net/socket.cused_39" class="line" nam/aused_39" cla;err = -pu8_2076       20et.c#L1673"8id="L87 0)
<20et.>20set/sock"+code=sock_all ize#L1668" idused_39" class="line" nam/aused_39" cla; =  = 640a hrcomment"> */(8/a>       8<2077       2020sy_socke">out = 20ssref">gsref">unlikelyke">out640a hremcpy>    err,  =  = (8/ id="L1638>2079       20"L1676">1678<87ref="20"L1>20st.c#L1637" newsock);
ef">unlikell="net/socket.cused_39" class="line" nam/aused_39" cla; = (8/a>       8<208>       20t take time8to co88class20t t>20t rlen);
<} href="+cod8t/socket.c8L2081       20href="net/s8cket.8#L168020hre>20t1le" class="sref8="line" na8e2082       20+code=conne8t" cl88/a> =20+co>20tttemptlookup_light" cla_16eect);levfpme to 709cla_16eect)a>;
ewfd, 1711<8a20t3       20">fd, s8ruct 88ment"20">f>20t3s="line" namk_all="net/socket.cct)_e=SYubufass="sref"ct)_e=Sa>;
r hreNULsocket.c#L1ct);levfpme to 709ct)a>;
)wfd, 1711<8a20t4       20net/socket.8#L16888 href20net>20t16422ine" name=sref_k16ee_ass="line" nam/asref_k16ee_a>        err = ;
""6640" class="lict)_ef="=getsockname"/ct)_ef= ct/"p_light(8/a>       8<2085       20{
20t5temptlookup_light" cla_16eet" ci161683.newfilcla_16eet" ookuewfd, 1711<8a20t6       20
;
r hreNULsocket.c#L1t" sta="net/socket.c#L1t" sta="a>;
)wfd, 1711<8a20t7       20        str8ct 20ty_socke">outubuf href="+cok16eenet/socket.c#L1k16ee>        ;
hp_light(8/a>       8<2088       20L1686" clas8="lin88ocket20L16>20t8temptlookup_light" claci161683.newfilclaookuewfd, 1711<8a20t9       20="+code=soc8" cla88an cl20="+>20tt.c#L1637" nee="L1653">1653        fd20srut_l} href="+cod8t/socket.c8L2091       20="+code=out7 clas79 name20="+>20s1le" class="sref8="line" na8e2092       20" class="sr7f">er7 =20" c>20sttempt to conneclass="commeac>/*
);
<20r20s" nameef="net/sket.c#Lenderpeer_addBSD ops"L17 interfac=la*
20e=a>20s4 nameef="net/sket.c#Lenderp*">/*
20s65YSCALef="ndn1upe7r20s6       20ref">err      3 newfsps"L17>    class="comment"> *      name to 709
newfile;
ubuf href="+coL171msg1683m.c#L1640" id="L> *    ">1617    7" class="line"ALef="ndn1upe7r20s7       20ket_connect7 clas79">soc20ket>20sy_socf="+code=soc8="sref">pu8_2098       20ockaddr7*)&am79me="L20ock>20s1686
 *       20st.c#L1637" nepan>
newfile;
 >21a>ref">gsref"> class="srefa href="+code=usockaddr" class="sref">usockaddr,
address;
1685        int err, 17s="sref">s7c21a1       21a"+code=out7 clas79 name21a"+>21a1le" class="sref8="line" na8e21a2       21a class="sr7f">er7 =21a c>21a2.c#L1695" id="L1"net/socket.c#L1ef="net/socket.c#L1713" id="ALef="ndn1upe7r21a3       21a, sockfd_lookup_light(8/a>       8<21a4       21a=address" 7lass=7sref">21a=a>210ile" class="sref8="line" na8e21a5       21a href="+co7e=err7 class21a h>21arr<->tttttt1+code=err" class="sref">err = -        err1617    7" class="line"reNULsocket.c#L1588" NULs
->(8/a>       8<21a6       21aef">errsoc21aet>21ay_socke">out, 1650        err = newfd;
17s="sref">s7c21a8       21ackaddr7*)&am79me="L21ack>2108temptlookup_light" claci161683.newfilclaookuewfd, 1711<8a21a9       21a="+code=ad7rlen"7class=21a=">210t.c#L1637" nee="L1653">1653        211rut_l} href="+cod8t/socket.c8L2111       21L1708" clas8="lin8" name21L17>2111le" class="sref8="line" na8e21"2       21the local a8dress8('21the>211ttempt to conneclass="commeac>/*
);
<21t/s>211" nameef="net/sket.c#Lenderpeer_addLinuxidps"Lf=i interfac=la*
812" cl21fd">2114 nameef="net/sket.c#Lenderp*">/*
 21165YSCALef="ndn1upe7r2116       21       8     81t.c#L2121"664" las12    rss="ce" name="L1617  name to 709
newffile;
newffil id="L>(8/ id="L1638>21"7       21{
out>1617    7" class="line"ALef="ndn1upe7r2118       21ref="+code 8ameso81ref="21ref>21"1686pu8_21"9       21 ct/soommen8len}
21 ct>21"a> =  *        *    hregram617    7" cl hregram6ut_light" class=7e" name="L76212>       21class0f the8conne82" nam21cla>212>ref">gsref"> class="srefa href="+code=usockaddr" class="sref">usockaddr,
2121ref">gsref"> class="srefa href="+c..c#L171msghneref">newffile;
21cewfile;
< class="srefa href="+c.c#pat_..c#L171msghneref">new.c#pat_..c#L17a>;
2123ref">gsref"> class="srefa href="+c.c#L171msghneref">newfile;
,21ef=>21c4.c#L1695" id class="srefa href="+cused_39" class="line" nam/aused_39" cla;21265YSCALef="ndn1upe7r2126       2123" class="8ine" 82t.c#L2123">212t.c#L1695" id="L16640" class="livef="=getsockname"/6" class= classINT_MAX" classUIO_MAXIOVnet/socket.c#L1UIO_MAXIOV;17s="sref">s7c2127       21elease" cla8s="sr82t.c#L21ele>212y_socke">outubuf href="+covef="=getsockname"/6" class=ef="+code=ECONNAeUIO_MAXIOVnet/socket.c#L1UIO_MAXIOV;16>212" class="line" n8L1676" cla8s2129       211627" class8"line82/a>}
21162>212drlen);
    7" cl hregram6ut_l=ef0ight" class=7e" name="L76213>       21security_so8ket_a836">1621sec>213ookup_light(8/ id="L1638>2131       21ref="+code=8ewsoc83ent">21ref>21s             addr,
address;
1685        int err, 17s="sref">s7c21s2       21ref">err21ref>2132.c#L1695" id="L1"net/socket.c#L1ef="net/socket.c#L1713" id="ALef="ndn1upe7r2133       21="sref">acc8pt21ss="lineeeeeeeee      e="L1653">1653        sock213ile" class="sref8="line" na8e2135       21ode=f_flags8 clas83class21ode>213rr<->tttttt1+code=err" claused_39" class="line" nam/aused_39" cla;;
ight" class=7e" name="L762136       21"sref">err<8a> &l83 0)
<21"sr>213a>);
640a hendry id=rereNULsocket.c#L1L.c#1msghneref">newffil id=ight" class=7e" name="L762137       21ocket.c#L1686" id83t.c#L21ock>213y_socke">out, new.c#pat_..c#L17a>;
ubuf href="+coL.c#1msghneref">newffil id=ight" class=7e" name="L762138       21t;gsref">1+code=err" class="sref">err = -address,
a>21st.c#Lght" class=7e" name="L76214>       21len" class=8sref"840ef="21len>21le.c#L1637" newhileL16640" class="li hregram617    7" cl hregram6ut_l=e="L1>ubuf href="+covef="=getsockname"/6" class) f="+code=soc8="sref">pu8_2141       21 name="L1638">163841name21 na>21l             ECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" f="+code=soc8="sref">pu8_21l2       21ref="+code=8ut_fd84class21ref>21lclass="sref">unlikely>gsref">1+code=err" class="sref">err = -        errnewfile;
ubuf href="+co.c#pat_endry msg_640a h.c#pat_endry id="_light(8/ id="L1638>21l3       21=move_addr_8o_use843lass21=mo>214s="lineeeeeeeee        1617    7" class="line"rerr, 17s="sref">s7c21l4       21L1642" clas8="lin84 href21L16>2141642err = -16908e" name="L8621l5       21r" class="s8ef">u84socke21r" >214rr<->ttttttttttttttttttttttttttttttbreakme="L1651">17s="sref">s7c21l6       21_addrlen214et/sock";
1+code=err" class="sref">err = -        err, 640a hrcomef= ct/"p_light(8/a>       8<2147       211643">1643<8a>   84ref="21164>21ly_socke">out21lsref">gsref">unlikely4gelsenf="+code=soc8="sref">pu8_21l9       21#L1645" id=8L164584="sre21#L1>21lt.c#L1637" newsock);
ef">1+code=err" class="sref">err = -        errnewfile;
ubuf "+code=ouendry msg_640a hendry id="_light(8/ id="L1638>215>       21omment">/* 8ile f8ags ar21omm>21omt_fd;
1617    7" class="line"rerr, 17s="sref">s7c2151       21/socket.c#L8649" 85"sref21/so>21o             err = -16908e" name="L862152       21ef="+code=f8_inst85/a> =21ef=>215class="sref">unlikely>gsref">>>>>>>>>breakme="L1651">17s="sref">s7c2153       21s="sref">ne8file<85>);
<21s=">215s="lineeeeeeeee        err = -        err, 640a hrcomef= ct/"p_light(8/a>       8<2154       21t.c#L1652" 8d="L185ref">21t.c>2151642fput_8eeded85">soc21sre>215y_socke">out->17s="sref">s7c2158       2155" class="8ine" 85me="L2155">215sref">gsref">unlikelyke">out17s="sref">s7c2159       21" class="sr8f">ou85="sre21" c>215t.c#L1637" newsockfput<8a>(216 rlen);
<} href="+cod8t/socket.c8L21s1       21et/socket.c8L165886"sref21et/>2161le" class="sref8="line" na8e2162       21href="+code8put_u86" id=21hre>216ewfile;
1650        err = newfd;
17s="sref">s7c2163       21t/socket.c#81662"8id="L121t/s>216ass="sref">addrl8ef="+code=8o2164       21"sref">fd, st86 name21"sr>21s1642/*
216ss="line" namk_all="net/socket.c hregram617    7" cl hregram6ut_l=!=1690">16908e" name="L862166       21
1653     hregram617    7" cl hregram6ut_light" class=7e" name="L762167       21
21sy_socght" class=7e" name="L762168       21        ret8rn 21ssref">gsref">e="L1653">1653        21sdrlen} href="+cod8t/socket.c8L217>       21s="line" na8e="L1872171       21a>soc21a><>21s     3">1653    6653      4     class="comment"> *      name to 709
newffile;
newffil id="_light(8/ id="L1638>2172       21a>unlikely> *   vef="=getsockname"/6" class"L> *    ">1617    7" class="line"ALef="ndn1upe7r2173       21/a>>21s" namf="+code=soc8="sref">pu8_21s4       21t.c#L1671" 8d="L187 href21t.c>2174ref">gsref">e="L1653">1653    coket.ops"LL171msg1683m.c#L16coket.ops"LL17>    "comment"> *      name to 709newffil id="="comment"> *   vef="=getsockname"/6" class"L"comment"> *    ">1617    7" class="line"ight" class=7e" name="L762175       21t.c#L1672" 8d="L1872" cl21t.c>21sss="l} href="+cod8t/socket.c8L2176       21et.c#L1673"8id="L87 0)
<21et.>217et/so_light(8/a>       8<2177       2121sy_socstatic=rss="ce" name="L161coket.recvL171msg1683m.c#L16coket.recvL17>     class="srefa href="+code=usockaddr" class="sref">usockaddr,

newfile;
newfil id="_light(8/ id="L1638>2178       21s broken wi8h res87=o6="21s b>21ssref">gsref">unlikelyke">out
newfile;
1617    7" class="line,lass="ce" name="L161nos" ci166eref">newfnos" >   "ALef="ndn1upe7r2179       21"L1676">1678<87ref="21"L1>21st.c#Lf="+code=soc8="sref">pu8_218>       21t take time8to co88class21t t>218>ref">gsref"> class="srefa href="+c.c#pat_.c#L171msghneref">new.c#pat_.ile;
pu8_2181       21href="net/s8cket.8#L168021hre>218             new.c#pat_.ile;
ubuf href="+coL171msghneref">newfil id=ight" class=7e" name="L762182       21+code=conne8t" cl88/a> =21+co>218ewfile;
< class="srefa href="+cout" ci166eref">newfile;
reNULsocket.c#L1t" sta="net/socket.c#L1t" sta="a>;
[eNULsocket.c#L1UIO_FASTIOVnet/socket.c#L1UIO_FASTIOVa>;
]ight" class=7e" name="L762183       21">fd, s8ruct 88ment"21">f>2183ref">gsref"> class="srefa href="+cout" ci166eref">newfile;
ra href="net/sockt" ci161683.newfile;
ref="+code=ECONNAet" sta="net/socket.c#L1t" sta="a>;
ight" class=7e" name="L762184       21net/socket.8#L16888 href21net>21t1642new.f=inpt7a>;
ight" class=7e" name="L762185       21{
218ss="line" namkss="ce" name="L161     *   tota)_ef="=getsockname"/tota)_ef=a>;
s="comment"> *   ef="=getsockname"/"> */(8/a>       8<21t6       21
218y_socke">out<*">/*
gsref"> class="srefa href="+cef="="sr_storagfd" class="sref"ef="="sr_storagfa>;
reNULsocket.c#L1="srd" class="sref"="sr*/(8/a>       8<21t9       21="+code=soc8" cla88an cl21="+>218t.c#Lght" class=7e" name="L76219>       21sref">fd2190_socke">out<pointer">*">/*
gsref"> class="srefa href="+cef="="srd" class="sref"ef="="sra>;
er7 =21" c>2192s="line" namkss="ce" name="L161code=SYSCALL_DEFINE"net/socdn1);
<21r219ass="sref">addrl8ef="+code=8o2194       21e=address" 7lass=7sref">21e=a>2194.c#L1695" id="L16640" class="lime/aCme/aCOMPATf">ECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" f="+code=soc8="sref">pu8_2195       21a href="+co7e=err7 class21a h>219rr<->tttttttttttttt="L16640" class="liget_.c#pat_.c#L171msghneref">newget_.c#pat_.c#L17>    "comment"> *   L17oket1msg_ce" na href=inket id=socket.c#L1640" i.c#_.c#pat1msg_ce" na href=in.c#pat(8/a>       8<21s6       21ref">erre="L165-6640" class="liEFAULTf">ECONNABORTEDEFAULTa>;
a href="+cod8t/socket.c8L21s7       21ket_connect7 clas79">soc21ket>219y_socke">out<4gelsen="L16640" class="licopy_1685ode=SYSCALL_DEFINE"ncopy_1685ode=S>        newfil id="s ="L168pan>
newfile;
)"h_light(8/a>       8<21s8       21ockaddr7*)&am79me="L21ock>219sref">gsref">unlikelye="L165-6640" class="liEFAULTf">ECONNABORTEDEFAULTa>;
a href="+cod8t/socket.c8L21s9       21f="+code=ad7rlen"7class=21f=">219t.c#Lght" class=7e" name="L7622a>       22a>  code=ad7rlen"7class=22a> >22a>ref">gsref">="L16640" class="liL17oket1msg_ce" na href=inket id=a> = 640a hrcomt" ne"s="lieclassINT_MAX" classUIO_FASTIOVnet/socket.c#L1UIO_FASTIOVa>;
" f="+code=soc8="sref">pu8_22a1       22a"+code=out7 clas79 name22a"+>220             err = -ECONNABORTEDEme/SIZEa>;
a href="+cod8t/socket.c8L22a2       22a class="sr7f">er7 =22a c>220class="sref">unlikely="L16640" class="liL17oket1msg_ce" na href=inket id=a> = 640a hrcomt" ne"s="lieclassINT_MAX" classUIO_MAXIOVnet/socket.c#L1UIO_MAXIOV;17s="sref">s7c22a3       22a, sockfd_lookup_light(8/a>       8<22a4       22a=address" 7lass=7sref">22a=a>22016422ine" name=ss="sref">err = -ECONNABORTEDENOMEMookup_light(8/a>       8<22a5       22a href="+co7e=err7 class22a h>220rr<->tttttttttttttt href="net/sockt" ci161683.newfile;
ref="+code=ECONNAekmallo ci166eref">newfkmallo >         = 640a hrcomt" ne"s="li*s ="L168pan>
newfile;
)"_light(8/ id="L1638>22a6       22aef">errtttttt href="net/sockGFP_KERNE" NULs
GFP_KERNE"a>;
)p_light(8/a>       8<22a7       22aet_connect7 clas79">soc22aet>220y_socke">out;
h_light(8/a>       8<22a8       22ackaddr7*)&am79me="L22ack>220sref">gsref">unlikelyke">outsockfd_lookup_light(8/a>       8<22a9       22a="+code=ad7rlen"7class=22a=">220drlen);
<} href="+cod8t/socket.c8L221>       22"L1707" cla8s="li81221ookup_light(8/ id="L1638>2211       22L1708" clas8="lin8" name22L17>221             ocket.c#L1706" iSend aac>/*
221ttempt to conneclass="commeyke">out(verify_ile/*
);
<22t/s>221" nameef="net/sket.c#Lenderpke">outef=ce)>/*
812" cl22fd">2214 nameef="net/sket.c#Lenderpke">out/*
 22165YSCALef="ndn1upe7r2216       22       8     81t.c#L22221a>);
1712ubuf href="+coL17oket1msg_ce" na href=inket id=a> = (8/a>       8<22"7       22{
out,         newfil id=)p_light(8/a>       8<2218       22ref="+code 8ameso81ref="22ref>2211686
ECONNABORTEDme/aCme/aCOMPATs="lie="L168="net/socket.c7">1617    7" class="line" f="+code=soc8="sref">pu8_22"9       22 ct/soommen8len}
22 ct>221t.c#L1637" newsock2ine" name=ss="sref">err = - *   verify_.c#pat_out" ci166eref">newfverify_.c#pat_out" >        ;
">err, ECONNABORTEDVERIFY_WRITE id=)p_light(8/a>       8<222>       22class0f the8conne82" nam22cla>222>ref">gsref">4gelse_light(8/a>       8<2221       22 href="+cod8=sk" 82 name22 hr>222             err = - *   verify_out" ci166eref">newfverify_out" >        ;
">err, ECONNABORTEDVERIFY_WRITE id=)p_light(8/a>       8<2222       22    if (err = -16908e" name="L862223       22" class="li8e" na82d="L122" c>222s="lineeeeeeeee      ockfd_lookup_light" cla_16eet" ci161683.newfilcla_16eet" ookup_light(8/a>       8<2224       22ef="net/soc8et.c#82,22ef=>22c4.c#L1695" id"comment"> *   tota)_ef="=getsockname"/tota)_ef=a>;
ref"comment"> *       22265YSCALef="ndn1upe7r2226       2223" class="8ine" 82t.c#L2223">222a>);
new.f=inpt7a>;
rer >ubuf href="+coL17oket1msg_ce" na href=inket id=a> = sookuight" class=7e" name="L7622c7       22elease" cla8s="sr82t.c#L22ele>222y_socke">out,  = 161msg_ce" na href=ine" name="ref="+code=ECONNAe7">1617    7" class="lineie="L1616640" class="lime/aCme/aCLOEXECf">ECONNABORTEDme/aCme/aCLOEXECline|6640" class="lime/aCme/aCOMPATf">ECONNABORTEDme/aCme/aCOMPATs="l)p_light(8/a>       8<2228       22>1625  8     82ref="22>16>222" class="line" n8L1676" cla8s2229       221627" class8"line82/a>}
22162>222drlen);
  = newfd = 161msg_ce" na hrefne" name="re="L168="net/socket.cO_NONBLOCK1msg_ce" na hreO_NONBLOCK;(8/a>       8<223>       22security_so8ket_a836">1622sec>223mt_fd;
1617    7" class="linei|ef="+code=ECONNAeme/aDONTWAITf">ECONNABORTEDme/aDONTWAITlinea href="+cod8t/socket.c8L2231       22ref="+code=8ewsoc83ent">22ref>22s             addr,
err = -newfnos" >    ?="srefa href="+cef=".recvL17_nos" ci166eref">newfsref_recvL17_nos" >    :="srefa href="+cef=".recvL17ci166eref">newfsref_recvL17;errerr22ref>223class="sref">unlikelyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"comment"> *   tota)_ef="=getsockname"/tota)_ef=a>;
"L"comment"> *    ">1617    7" class="line"ight" class=7e" name="L762233       22="sref">acc8pt22ss="lineeeeeee="L16640" class="liss="sref">err = -16908e" name="L862234       22ef">sock2231642(8/a>       8<2235       22ode=f_flags8 clas83class22ode>223rr<->tttttt1+code=err" claef="=getsockname"/"> */ *       err<8a> &l83 0)
<22"sr>223et/so_light(8/a>       8<2237       22ocket.c#L1686" id83t.c#L22ock>223y_socke">out->pu8_2238       22t;gsref">unlikely"+code=err" class="sref">err = - *   mut"_39" _toode=SYSCALL_DEFINE"nmut"_39" _toode=S>    err, pu8_2239       22">address,
a>223t.c#L1637" newsock);
ef">unlikel>unlikely"+code=err" claL17oket1msg_ce" na href=inket id=a> = 640a hrcomment"> */ *   u="srd" class="sref"u="sr*/pu8_224>       22len" class=8sref"840ef="22len>224mt_fd;
, 163841name22 na>22l             err = -16908e" name="L8622l2       22ref="+code=8ut_fd84class22ref>22lclass="sref">unlikely>gsref">ockfd_lookup_light" cla_16eet" ci161683.newfilcla_16eet" ookup_light(8/a>       8<22l3       22f">22316421617    7" r82t.640" i7">1pat_e0">21
22 c5   8L21s7" na href=inket id=socket.c#L1640pppp* succ=ssful, re161msg_ce" na href=ine" name="ref="+code=ECONNAe7">1617 ly"+code=err" claL17oket1msg62234         21L1642" clas8="lin842href22L16>2141642       8<22"7    FLAGSa>{
outc8="sref">pu8_224>       22leode=f_flage="L1690">16908e" nam2="L862439" cla;err, err = -16908e" name="L8622l2   " id83t.c#3">1643<8a>   84ref="21162>21ly24PAT_NAMELEN"=getsockname"/COMPAT_NAMELEN>        newfil id=)p_light(8/a>       8<2218       22ref="+cod6908e" name="L8622l2   a> = -22316421617    7" r82t.640" i7"2id="L22(22265YSCALef="ndn1upe7r2226       2223" class="8ine" 82t.c#L2223">222a>);
newfile;
2amsgt2socket.c#code=SYSCALL_DEFINE"net/socdn1+code=ouendry msg_64ttttttttttttttt="L16640" class="liglass="8ine" 82t.c#L2223">222a>) 22">address,
222a>) 22e=soc8="sref">pu8_224>       22l na href=i2ket id=socket.c#L1640" i72>16172/a>    7" clasf"="sr*/s7c2151  2    21/socket.c#L8649" 852sref22/so>21o                    8<22l3       22f">22316421617    7" r82t.640" i7"2id="L22(22265YSCALef="ndn1upe7r2226       2223" class="8ine" 82t.c#L2223">222a>);
16908e" nam2="L862152       21ef="+code=f8_inst8et/socdn1+code=ouendry msg_62221y_socke">out222a>) 22">address,
222a>) 22e=soc8="sref">pu8_224>       22l ht" cla_16r" class="sref">err, 2a hre25"sr_ef=*/(8/a>            21ref="+code=8ock" 85ref="21ref>215et/so_lig2       8<2254       21t.c#L1652" 8d=2L185r2f">21t.c>2151642err = -16908e" name="L8622l2  "net/socke2dry msg_640a hendry i2=ight25=oref="=getsockname"/87=oref=l3       22f">2231642218ss="line" namkss="ce" 21et/socket2c8L165385class21et/>215rr2->t2521set/sock";
(8/a>2      8<2157       21sref2>fput25newfd" class="sref">new"ct)_e=Sa>;
""6640" class="lict)_ef="=getsockname"/ct)_ef= ct/"p2e=address"2hk->27s="s25COMPATs="l)p_light(8/a>     ookup_light" cla_16eet" ci161683.newfilcla_16eet" ookuewfd, 1711<8a20t6       20
s7c2259       21" class="sr8f"2ou85=26msg_ce" na hrefne" name="re="L168="neNULsocket.c#L1t" sta="net/socket.c#L1t" sta="a>;
)wfd, 1711<8a20t7       20        s2"net/sock 2regram617    7" cl hr2gram626/a>21sdrlen} href="+newfd;
fput<8a>(2162rlen);
<} ht" class=7e" name="L762167       21
21sy_so2=err" clas2="sref">err = gsref">ockfd_lookup_li21ss="lineeeeee2/8>, st86 2ame21"sr>21s1642er716532/a>     hregram617   27" cl26me/aCme/aCLOEXECline|6640" clasght" class27e" name="L762168       22     2  ret8ss=7e" name="L7ref8href="+cod8=2095       20a href="+co7e=err7 class20a h>20s65Yr = -err      3 newfsps"L17>    class="comment"> *      name to 70me/aCLOEXECline|6640" clasgsref">e="21653">1653        2172       21a>, newffile;2upe7r20s7       20ket_connect7 clas79">soc20ket>20sy_socf="+code=soc8="sref">pu8_2098       20ockaddr7*)&am2sref">unli2ely> *    ">16172   7"2class="line"ALmsghneref">newfile;
 >21a>ref">gsref"> class="srefa href="+code=usockaddr" class="sref">usockaddr,
address;
newffil 2d="="27> *   tota)_ef="=getsockname"/t" class"L"2omment"> *    ">1617 2  7" 2739" cla;err, 640a h.c#pa href=="L16640" class="fd;
16532c#L171msghneref">newfile<2a>;
<27me/aCme/aCLOEXECline|6640" clasce" na hre2=inket id=so>21lsref">gsref">unlikely4gelsenf="+cod176       21et.c#L1673"8id="L87 0)
<21et66eref">newfnos" >    ?="srefa href="+cef=".recvL17_nos" ci166ent"> *      name to 70"+code=ouendry msg_640a hendry id="_light(8/ id="L1638>215>       21omment">/* 8ile f8ags ar2101685" id="L1685" class="lin2line,lass=2ce" name="L161nos" ci166e2ef">n28kup_light(8/a>       8<22a9eref">new.2#pat_.ile;
    7" class="linei|efcket.c8L21s1       21et/socket.c8L165886"sref21et/>2161le" class="sref8="line" na8e2162       21href="+code8put_u86" id=21hre>216ewfile;
1650        new.c#pat_.ile;
ne2file;
reNULsocket.c#L2t" st2="net/socket.cht" class=7e" name="L762167       21
21sy_so2ef="+cout"2ci166eref">newfile;
r2 href2"net/skely>gsref">ockfd_lookup_lime="L762182       21net/socket.8#L16288 hr28> *   tota)_ef="=getsockname"/tame="L161 2   *   ef="=g2tsock282181>);
<21t/s>211" nameefket.cL('L87 0cno11ttempt to conneclass="commeac>/*
2(8/a> 2     8<21t7       21     2  str2ct );
<21t/s>211" nameef="net/sket.c#Lenderpeer_addLinuxi288ref">gsr2f"> class="srefa href="+c2f="="2r_storagfd" class="sref"ef="="s2_storagfa>2
reNULsocket.c#L1="srd" c2ass="2ref"=" href="+cod8t/socket.c8L2176        21et.c#L1673"8id="L87 0m+81id="L21dr<>21165YSCALef="ndn1upe7r2116       21       8     81t.c#L2121"664" las12    rss="ce" name="L1617  name to 709
newffilenew.2219>       21sref">fd    7" class="line"rer8h res87=o6="21s b>21ssref">gsref">unlikelyke">out
       8  timesp8ewsoc83ent">22retimesp8et.ops"LL17>    rss="ctimenewfd;
;2 =21" c>2192s="line" namkss="ce" n2me="L29  tota)_ef="=gf="ndn1upe7r2118       21ref="+code 8ameso81ref="21ref>21"1686pu8_21"9       21 ct/soommen8len}
21 ct>21"a> = newfile;
ECONNABORTEe=usockaddr" class="sref">usockaddr,
2121ref">gsref"> class="srefa hre2newget_.c#2at_.c#L17>    "comment"> 2   L12oket1msg_ce" n=SYSCALL_DEFINE"net/socdn121cewfile;
< class="srefa href="+c.c#pat_..c#L171msghnere2<21s6     2 21ref">err219et/sock";
E"net/socdn1218y_socke">out<22retimesp8et.ops     21 href="+cod_timesk" 82 name21 hr>d_time2123       21" class="li8e" na2s8ref">gsr2s8       21ockaddr7*)2am79m2="L21ock>219sref">gsref">unlike3ye="L165-6340" class="liEFAULTf">ECO3NABOR3EDEFAULTa>;
a href="+cod8t/sockettimenewfd;
219sref">gsref">unlike3y1="L165-63419>       21sref">fd640a hrcomt" ne="+cod8t/socketpoll_select_set_timenewfd;
d_time2123t71msghneref">new.imenewfd;
22retv_=8eewffile220             err<<<<<<<<<<<<<<<<<<<<<1msghneref">new.imenewfd;
22retv_n/a>;
 = 640a hrcomt" ne="s ="L168pan>
s7c32a3       22a, 21ss="lineeeeee3ss=7sref">32a=a>2201642223164216>212" class="line3inket id=a3 =  id=ight" class=7e" name="L7621a>       21a>  code=ad7rlen"7class=21a> >21a>ref">gsref"> class="srefa href="+code=usockaddr" class="sref">usockaddr,
address;
err,        8<32a8       22ackaddr7*3&am7930e" name="L762148     ht" class=7e" name="L762167       21
21sy_so3so3kfd_l3okup_light(8/a>       8<22a3       22a3"+code=ad7rlen"7class=22a3">2203117    7" class="linei|ef="+code=ECONNAeme/aDONTWAITfsref">err, 2161le" class="sref8="line" na8e2162       21href="s class="sref8="lik.c#L1685" ierr" claef="=getsock3 hr22"L1>231ookup_light(8/ id="L3638>231srd" class="sref"="sr*/id="L1651" class="line" na3l a8dress83'22the>221ttempt to c3nnecl318ref="82'22   >22cewfile;
<="L16640" pewfd;
21sy_so3s7c3c#81712"81>);
<22t/s>221"3namee31/a83de=ad21="s>21ss="lineeeeee3f">ef=ce)>3*
;
ight" class=7e" name="L762136       21"sre3cl22fd">2234 nameef="net/sket.c#Lend3rpke"3out/*
newffil id=ight" class=7e" name="L762137       21ocket.c#L1686" id83t.c#L21ock>213y_socke">out, ubuf hre3="+co3121set/sock";
address,
a>21st.c#Lght" class=7e" name="L76214>       21len" class=8sref"840ef="3
ECONNABORTEDme/aCme/092       20" class="L221>       22"L1707" cla8s="li81<3161683.new3ile;
">err, outout;
">err, err        newfil id=)p_light(8/a>       8<2218       22ref="+code 8ameso81ref="22ref>2211683ht(8/a3       8<2222       22   3if (<3 8ref="82'22   >22>    7" class="linei|ef="+code=ECONNAeme/aDONTWAITfsref">err, ="+cod176       21et.c#L1673"8id="L87 0)
<21et66eref">newfnos" >    ?="srefa href="+cef=".y>gsref">1+code=err" class="sref">err = -        err222s="lineeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee+code=ouendry msg_640a hendry id="_light(8/ id="L1638>215>       21omment">/* 8ile f8ags ar,socket~s=7">161msg_ce" na    2FORONE  ef=ce)>3>,22ef=>22c4.c#L1695" id"3ommen3216>214164222>    7" class="linei|ef62139       21">address,
 *       640a hrcomt" ne"s="li*s =""""""""""""a>, ;
rer >ubuf href="+co317oke32y msg_640a h.c#paaaaaaaaaaaaaaaaa>outECON3ABORT32clas79">soc22aet>220y_socke">class="linei|ef="+code=ECONNAeme/aDONTWAITfsref">err, ="L1640" i7">1617    7" r82t.640" i7a>,
err = -        ECONNABORTEDm3/aCme32=SYSCALL_DEFINE"nmut"_39" _to" class="8ine" 859;21   >21cewfile;
< class="srefa href="+c.c#pat_..c#L171msghnere3s="sref">n3wfd = 131msg_ce" na hrefne" na33a>    7" class="line"rerrclass="linei|ef="+code=ECONNAeme/aDONTWAITfsref">err, ="+cod176       21et.c#L1673"8id="L87 0)
<21et66eref">newfnos" >    ?="srefa href="+cef=".y>gsref">1+code=err" class="sref">err = - et.c#Lock=ile"rereNULsocket.c#L1UINT_Mss="srefa href="+c.c#L171m3cvL17ci1663ref">newfsref_recvL17;err640a hendry id="_light(8/ id="L1638>215>       21omment">/* 8ile f8ags ar,socket~s=7">161msg_ce" na    2FORONE   3352       21ef="+code=f8_inst8et/socdn1ne"rerrclass="linei|ef62139       21">address,
a3c8pt2222222222""""""""""""a>, sock2141642outerr, L1640" i7">1617     r82t.640" i7a>,
 = -         */3/ref"comment"> *       640a h.c#paaaaaaaaa" class="8ine" 85cod8=sk" 82 name21 hr>2121ref">gsref"> class="srefa hre36" id83t.c3L22ock>223y_socke">outgsref">ockfd_lookup_l3/a> = - *   mut"_393 _too33"L21ock>219sref">gsref">unlike3g_ce" na h3ef=inket id=a> = 64ref"="sr*/id="L1651" class="line" na3en" class=3sref"840ef="22len>224mt_f3;3out163341name22 na>22l       " class="8ine" 85men8len}
21 ct>21"a> = 22light(8/a>       8<2171ms   2FORONE " cls on 223>       2 after one panet/s*="net/sket.c#Lenderpeer_addLinuxi3g62234    3    21L1642" clas8="lin843href23L16>2141642/* 8ile f8ags ar,sockets=7">161msg_ce" na    2FORONE  16908e" nam3="L8634640a hrcomt" ne"s="li*s =class="linei|efet/socket.cO_NONBLOCK1msg_ce" na hreO_NONBLOCK;(8/a>       8<223>       22security_so8ket_a836">1622sec3class="sre3">err, 1643<8a>   84ref="21163>21ly34/socket.cu="srd" clashref="+cod8t/sockettimenewfd;
,
1622sec3f="+c.c#L131msghneref">newfile;
3amsgt3socket.c#code=SYSCALL_DEFINE"n"LL17>    rss="ctimenewfd;
err, timesp8e_subfd;
,
d_time2123t7"LL17>    rss="ctimenewfd;
1622sec3fn" class=3ket id=socket.c#L1640" i73>161735a he=err" class=""""" href=="href="+cod8t/sockettimenewfd;
22retv_=8eewffkname"/ue 8ameso81ref="22ref>2211683>s7c2151  3    21/socket.c#L8649" 853sref23/so>21o             ;
22retv_=8eewffkTfsref">err, timenewfd;
22retv_n/a>;
16908e" nam3="L863152       21ef="+code=f8_inst8et/socdn>outerr, 3a hre358pt2222222222kely>gsref">ockfd_lookup_l3       8<2354       21t.c#L1652" 8d=3L185r35> *   tota)_ef="=getsockname"/3"net/socke3dry msg_640a hendry i3=ight35640a hrcomt" ne"s="li*s =cight(8/a>       8<21Timenew, ht" clalr>/*iwt.c14> id="L121tcla88an cl21="+>218t.c#Lght" class=731et/socket3c8L165385class21et/>215rr3->t35y msg_640a h.c#paaaaaaaaahref="+cod8t/sockettimenewfd;
22retv_n/a>;
;
22retv_=8eewffkT="/u="sr_ef=*/(8/a>3      8<2157       21sref3>fput35clas79">soc22aet>220y_socke">et/socdn>out37s="s35e" name="L762148     kely>gsref">ockfd_lookup_l3sref">s7c2359       21" class="sr8f"3ou85=36kup_light(8/a>       8<22a3"net/sock 3regram617    7" cl hr3gram636ight(8/a>       8(8/a>       8<21Out of bandid="L, ht" clar"sre awayla88an cl21="+>218t.c#Lght" class=73       21s3ef">fput<8a>(21636rr" class="sref">err640a hendry id="_light(8/ i.ockname"/COMPATa>64sful, re(8/a>       8<223>OOB claid="L1651" class="line" na3=err" clas3="sref">err = gsref">ockfd_lookup_l3s      8<23ame21"sr>21s1642 *   tota)_ef="=getsockname"/3ef="+cod8=3165       21href="+code8_3use863lass212e;
<="L16640" pewfd;
 cket.c8L21s1       21et/socket.c8L165886"sref21et/>2161le" class="sref8="line" na8e2162       21href="+code8put_u86" id=21hre>216ewfile;
1650        16533/a>     hregram617   37" cl36me/aCme/aCLOEXECline|6640" cla3ght" class37e" name="L762168       23     36COMPATs="l)p_light(8/a>     ="+code=ECONNAeme/aDONTWAIT="/u="sr_ef=*/e="31653">1653         = , newffile;3address,
unli3ely> *    ">16173   7"37"net/sket.c#Lenderpke">out/*r>21ie/*iwt.crequested (14> )srefef8href="+cod8=22"2       22the loc3t.c#L1640"3iL.c#1msghneref">newffil 3d="="37L1706href="+cod8t/socket.c8eer_addasssssssss*   22 is non bl 22 andief8re aren't*r>oughid="L121tc...21>       22"L1707" cla8s="li81<3" class"L"3omment"> *    ">1617 3  7" 37ass212092       20" class="ser_addasssssssss*88an cl21="+>218t.c#Lght" class=73"L762175  3    21t.c#L1672" 8d="L1873" cl237y msg_640a h.c#palight(8/a>     ="+code=ECONNAeme/aDONTWAI!lass="sref">sockfd_AGAI>(8/a>       8<2_AGAI>51" de 8ameso81ref="22ref>2211683t653">16533c#L171msghneref">newfile<3a>;
<37clas79">soc22aet>220y_socke">c092       20" class="L221>       22"L1707" cla8s="li81<3aht" class3=inket id=so>n38srd" sket.c#Lenderpke">outnew.3#pat_.ile;
outnew.c#pat_.ile;
ne3file;
reNULsocket.c#L3t" st38s="commeyke">outnewfile;
r3 href388pt2222222222"sref21et/>2161le" class="sref8="line" na8e2162       21href="s class="sref8="lik.c#Le2162       21href="s _="+code=ECONNAeme/s _="+;
sockfd62167       21
21sy_so3me="L762183       21net/socket.8#L16388 hr3816>2141642gsref">ockfd_lookup_l3ame="L161 3   *   ef="=g3tsock38y msg_640a h.c#paht" class=7e" name="L7men8len}
21 ct>21"a> = soc22kely>gsref">ockfd_lookup_l3aht" class3f"> class="srefa href="+c3f="="3r_storagfd" class="sref"ef="="s3_storagfa>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" class=7e" name="L762167       21
21sy_so3_ref">new.3219>       21sref">fd   kely>gsref">ockfd_lookup_l3+cef="="sr3" class="sref"ef="="sra>;3gsref">ockfd_lookup_l3+6eref">ne3192s="line" namkss="ce" n3me="L39  totss=7e" name="L7 href="+co7e=e567       21
2161176        21et.c#L1673L87 0m+81id=    20ref">err   f">usockaddr,
ockfd_lookup_l3+f="+cout"3et/socku="sr_ef="=getsock3ame"/398pt22fil id="_light(8/ id="L16ock..c#L171msghneref">newffiafil id="_light(8/ id="L1638>2172       21a>gsref">ockfd_lookup_l3+e="L762183L16640" class="lime/aCme/3COMPA3916>2141642218y_socke">out<22retimesp8et.ops     21 href="+d=ight" class=7e" name="L762121  ".recvL17_nos" citimenewfd;
    "comment"> 3   L13oket1m 8ameso81ref="22ref>2211683<21s6     3 21ref">err219et/sock";
gf="ndn1upmen8len}
21 ct>21"a> = 218y_socke">out<22retimesp8et.ops     21 href="+timenew40a hendry id="_ligtimenew40a href=rss="ce" name="L1617ocket3sht" class3s8       21ockaddr7*)3am79m3="L21ock>219sref">gsref">unlike4ye="L165-6440" class="liEFAULTf">ECO4NABOR4EDEFAULTa>;
a href"sref">err, timenewfd;
fd640a hrcomt" nea hrht" class=7e" name="L7t.c8L2176        21et.c#L1673"8id="L87 0m+81id="ef">errnewffia(8/ id="L1638>2172       21a>223et/so_light(8/a>      =rss="ce" name="L1617ocket49 name22a"4>220             gsref">ockfd_lookup_l4f=inket id4a> = 640a hrlight(8/a>     copy_from=ight" class=7e" namcopy_from=ight1id="de=address" class="stimenew40a hendry id="_ligtimenew40a href".recvL17_nos" citimenewfd;
s7c42a3       22a, 22="s ="L168pan>
42a=a>2201642 *   tota)_ef="=getsockname"/4inket id=a4 = /*
errnewffia(8/ id="L1638>2172       21a>err21set/sock";
ef=inket id=socket.c#L164nnect40PAT_NAMELEN"=getsn>
8       21ockaddr7*)4&am7940e" name="L762148 t(8/a>     copy_+code=soc8="sref">pu8_copy_+code=s1id="ef">err;
so4kfd_l41msg_ce" na hrefne" name="re="L168="name="L7621c8       21>1625  8     82168pan>
22041/a>21rss="ce" name="L1617ocket4 hr22"L1>241ookup_light(8/ id="L4638>241srd" class="sht" class=7e" name="L7men8len}
21 ct>21"a> = ockfd_lookup_l4s7c4c#81712"81>);
<22t/s>221"4namee41/a83de=ad21="s>21ss="lineeeeee4f">ef=ce)>4*
21ss="lineeeeee4fnket id=a44 nameef="net/sket.c#Lend4rpke"41ass212092       20" class="L2 Argulass list.oizes fo  id="="linecall *88an cl21="+>218t.c#Lght" class=74SCALL_DEFI4E"net/socdn1ubuf hre4="+co4121#def(8At2123f="+cod8t/socketx/so_light(8x51" de7">1pat_e0">21
22x/so_light(8x51" de*.oizeoff2id="L22(22id="L1651" class="line" na4<8   22aef4="sr_ef=*/2211684
(8At2123f0)ia(8/ id="L16At/so_light(8At2123f3)ia(8/ id="L16At/so_light(8At2123f3)ia(8/ id="L16At/so_light(8At2123f3)ia(8/ id="L16At/so_light(8At2123f2)ia(8/ id="L16At/so_light(8At2123f3)i8ameso81ref="22ref>2211684161683.new4ile;
">err, (8At2123f3)ia(8/ id="L16At/so_light(8At2123f3)ia(8/ id="L16At/so_light(8At2123f4)ia(8/ id="L16At/so_light(8At2123f4)ia(8/ id="L16At/so_light(8At2123f4)ia(8/ id="L16At/so_light(8At2123f6)i8ameso81ref="22ref>22116841      22a4>ECONNABORTEDVERIFY_WRITE4id=)p4217    7" class="linei|efAt/so_light(8At2123f6)ia(8/ id="L16At/so_light(8At2123f2)ia(8/ id="L16At/so_light(8At2123f5)ia(8/ id="L16At/so_light(8At2123f5)ia(8/ id="L16At/so_light(8At2123f3)ia(8/ id="L16At/so_light(8At2123f3)i8ameso81ref="22ref>22116841hr22"L1>24ile;
">err, (8At2123f4)ia(8/ id="L16At/so_light(8At2123f5)ia(8/ id="L16At/so_light(8At2123f4id="L1651" class="line" na4ht(8/a4       8<2222       22   4if (<4 8ref=}=rss="ce" name="L1617ocket4862223    4  22" class="li8e" na82d=4L122"42/a83de=ad21="s>21ss="lineeeeee48">ef=ce)>4>,22ef=>22c4.c#L1695" id"4ommen4216>21#undef2ss=7e" name="L7At/so_light(8At2123e=ad21="s>21ss="lineeeeee48nket id=a4
ref"comment"> *       2181>);
<21t/s>211" nameL221>       22"L1707" cla8s="li81<440" class=4lime/aCme/aCLOEXECf">ECON4ABORT42t );
<21t/s>211" nameefss="srSystem call vectors.21>       22"L1707" cla8s="li81<4s="lime/aC4e/aCOMPATf">ECONNABORTEDm4/aCme42_MAXI2092       20" class="s221>       22"L1707" cla8s="li81<4s="sref">n4wfd = 143srd" sket.c#Lenderpke">out       22"L1707" cla8s="li81<4223mt_fd;
43ightoutout2161le" class="sref8="line1"2   kernel 21tc.beca
;
ECONNABORTEDm4/t"> 3352  4    21ef="+code=f8_inst8e4/socd43ssssssssssssss*88an cl21="+>LL_DEFI4E"net/socdn1ubuf hre4=f">a3c8pt<4a83de=ad22="s>2222222222"4"""""43e)>4>,22ef=>22c4.c#L1695" id"4ol22e3316>2441642out1pat_e0">21
class=74SCref="s class="sref8s=74SCf>20s6temptlookup_light" 674SCref="s class="s74SCf>20s6na4<8   22aef="L762121  ".recvL17_nos" citimenewfd;
221684       8<2222       22   4i>t33440a hrcomt" ne"s="li*s =c4ass="43    3 21ref">err640a h.c#paaaaaaaaa"4class4"8ine" 85cod8=na4<8   22aef="L762121  ".reca81ref="22ref>221
6]  22" class="li8e" na82d=4Ll="n3t/soc4et.cu="srd" claskely>gsre4">ock4d_lookup_l3/a>na4<8   22aef="L762121  ".reca081ref="22ref>2210>2211ss84'22the>221ttempt to c4n_too33"L214ck>219sref">gsref">unlike4g_ce"43e=ECONNAeme/aDt>21"a> = 21sy_so3_ref">new.3219>       21sref">fd64ref"="sr*4out
215rr24/a>;34ut241ookup_light(8/ id="L46>163341nam422 na>22l       " class="4ine" 44      21">address,
20nee="4 21
s7c32a3       22a, 22light48/a> 44e)>4>,22ef=>22c4.c#L1695" id"4oref23L16>24416422211684
lookup_light" 674SCref="s class="s74SCf>20]  22" class="li8e" na82d=4L"L8634440a hrcomt" ne"s="li*s =c4ass="44ef="+code=fp.c#L1UINT_MAX msg_co namkss="ce" 21et/socket2tee="4y id="_ligtimenew40a ha81ref="22ref>2214="sr_ef=*/24set/sock";
s7c32a3       22a, LL_DEFI4E"net/socdn1ubuf hre4=msgt3socke4.c#code=SYSCALL_DEFINE"n"4L17> 45wfd;
221ftimenew51" id="Lmeso81ref="22ref>221684ftimenew51" id="L namkss="ce" 21et/socket24="sr_ef=*/42a=a>220164224o              = 2211684
lookup_light" 674SCref="s class="s74SCf>20] /="line" na4<8   22aef4ftimenew51" id="Lm81ref="22ref>22142a=a>22016422222222222k4ly>gs45e)>4>,22ef=>22c4.c#L1695" id"4o185r35> * 4 tota)_ef="=getsockname"/4"net/45ULsocket.c#L1UINT_MAX msg_coa081ref="22ref>2210>221
0]  22" class="li8e" na82d=4Light35440a hrcomt" ne"s="li*s =c4ght1625  8     a181ref="22ref>2211ss84t.c#L1673"8id="L87a81ref="22ref>221
1]  22" class="li8e" na82d=4Li_en3424_640a h.c#paaaaaaaaah4ef="+45aef4>ef=inket id=socket.c#L164nfput35clas49">soc22aet>220y_socke">e4/socd4>out,
newfile<34s="s35e" n4me="L762148     kely>gsre4">ock4d_lookup_l3srecas23f="+cod8t/sockeeeeee4fnkeineeeeee48nket co7_S4fnkelook    21
2211ss84ftimenew51" id="Lm81ref="22ref>221[2]42a=a>2201642(8/a>       848/a> 4     8<21Out of bandidf="n3t/socket.c#L1651" id="L1634>21636rr" 4lass="sref">err640a hendcas23f="+cod8t/sockeeeeeBINDineeeeee48nket co7_BINDlook    21
4ut;
2211ss84ftimenew51" id="Lm81ref="22ref>221[2]42a=a>2201642gsref">ockfd4looku46 href="FAULa>(8/a>   f="n3t/socket.c#L1651" id="L1634>85r35> * 4 tota)_ef="=getsockname"/4ef="+465Ta>640a hendcas23f="+cod8t/sockeeeeeCONNECeineeeeee48nket co7_CONNECelook    21
;
<46(8/a>       8<21Timen625  8     /a>, ;
2211ss84ftimenew51" id="Lm81ref="22ref>221[2]42a=a>220164224e" na href=inket id=a> ck4t.c8L46e="L7men8len}
f="n3t/socket.c#L1651" id="L1634>put35clas4me/aCLOEXECline|6640" cla4ght" 468Ta>640a hendcas23f="+cod8t/sockeeeeeLISTEef="22ref>221168eeeeLISTEelook    21
  8     /a>, 2210>2211ss8442a=a>2201642640a hendcas23f="+cod8t/sockeeeeeACCEPeineeeeee48nket co7_ACCEPelook    21
add    22"L125  8     /a>, ;
2211ss84f   21
 vL17_nos" citimenewfd;
221[2], 042a=a>2201642out  8     8t" 7" cla8ightmkss="ce" 21et/8t" 7" cla8ightndry ligtimenew40a ha081ref="22ref>2210> = -;
2211ss84f   21
soc22aet>220y_socke">c492   4   20" class="L221>       22"LLLLLLLLLLLLL7r2116       21 vL17_nos" citimenewfd;
221[2]42a=a>2201642       22"Lf="n3t/socket.c#L1651" id="L1634f">n38srd"4sket.c#Lenderpke">out640a hendcas23f="+cod8t/sockeeeeeGETPEERNAMEineeeeee48nket co7_GETPEERNAMElook    21
out  8     /a>, ;
2211ss84f   21
outclass="linei|ef62139       21"7r2116       21 vL17_nos" citimenewfd;
221[2]42a=a>22016422222222222"4ref214t/>2161le" class="sreff="n3t/socket.c#L1651" id="L1634f"="37L170441642gsre4">ock485Ta>640a hendcas23f="+cod8t/sockeeeeeS4fnkePAIRineeeeee48nket co7_S4fnkePAIRlook    21
;
err, fpu" class=""g
outclass="linei|ef63139       21"7r2116       21}
21 ct>21"a> = }
f="n3t/s7c21651" id="L1634f"="37E21636rr" 4lass="sref">errs4c22ke48ISTEef="22ref>221168eeeeLISTEelook    21
2210> = - cla4s="srefa href="+c3f="="3r4stora49s<&de=addra181ref="22ref>2211ss8442a=a>2201642err    4  21sref">fd2210> = -;32211ss84f   625  8     8t" 7" peerightmkss="ce" 21et/8t" 7" peerightndry ligtimenew40a ha081ref="22ref>2210> = - vL17_noci1" name="L1617  name to4709gsref">ockfd_lookup_ref>2211ss8442a=a>22016422172       21a>2161le" class="sreff="n3t/sRECV651" id="L1634f"="3RECV636rr" 4lass="sref">err640a hendnewfd;
4ut2210> = - 3   L13ok4t1m 849e=err" claef="=getsocf>221[2]42a=a>2201642upmen8len4/81/a>}
21 ct>21"a> = }
f="n3t/sRECVFROM651" id="L1634f"="3RECVFROM636rr" 4lass="sref">err221168eeeeLISTEelook    21
2210> = -1622sec3f="+c.211ss84f   625  8     8t" 7" peerightmkss="ce" 21et/8t" 7" peerightndry ligtimenew40a ha081ref="22ref>2210> = -outclass="linei|ef65139       21"7r2116       215 0)
<22"sr5223et/so_light(8/a>  5   =r50CCEPeineeeeee48nket cf>221[2]42a=a>2201642220   5         gsref">ockfdmen8len}
f="n3t/s7HUTDOW.c#L1651" id="L1634>7HUTDOW.636rr" 4lass="sref">err>       22"L125  8     /a>, (8/a>       8<"FAULa5ref=r50>gsref">ockfd_lookup_f>221[2]42a=a>2201642}
f="n3t/s7E704hrOt.c#L1651" id="L1634 7E704hrOt.636rr" 4lass="sref">err 3   L13ok5ef =r50e=err" claef="=getsoco7_ACCEPelook    21
4ut;
err, fpu" class=""g
< 22aef4="sr_ef=*/outclass="linei|ef631href="+code=fo8     21s3ef">fpu" class=4139       21"7r2116       215 8a href="5A81/a>}
21 ct>21"a> = 21s50_Mss="srefaa181ref="2f>221[2]42a=a>2201642err(8/a>       8<"FAULa5ref=r51L1651" class="line" nc3f=f="+code=f   21
;
err, fpu" class=""g
< 22aef4="sr_ef=*/outclass="linei|ef631hc#38ight4sket.c#Lenderpke5
0)
<22"sr5d7rlen"7class=22a4">220415a>21r51  8     /a>, outclass="linei|ef64139       21"7r2116       215"L7men8len5/81/a>}
21 ct>21"a> = 221[2]42a=a>2201642221ttempt to c4nnecl41n5wfdke514a)_ef="=getsmen8len}
f="n3t/s7ENDef="s class="s74SCf>207c2151 ||tlr" 4lass="sref">errgsref">ockfd_lookup_o7_ACCEPelook    21
errsrefsede7 0las8="lin8" 4ame2248lass="linei|eftimenewfd  8     8t" 7" p66eref">newfnos" >    ?="srefa href="+cef=".y>gsref">1+code=err" class="sref">err = -;
221[2]42a=a>2201642207c21511 ||tlr" 4lass="sref">errerrsrefsede77 0las8="lin8" 4ame2248lass="linei|eftimenewfd  8     8t" 7" p6 20ref">err   f">usockaddr = -       22"Lf="n3t/sRECVef="s class="s74SCf>20RECVef=||tlr" 4lass="sref">err(8/ id=5L16At/so_light(8At2125f6)i852L1651" class="line" neeeLISTEelook    21
errsref625<7 0las8="lin8" 4ame2248lass="linei|eftimenewfd  8     8t" 7" p66eref">newfnos" >    ?="srefa href="+cef=".y>gsref">1+code=err" class="sref">err = -;
(8/ id=5L16At/so_light(8At2125f3)i852CCEPeineeeeee48nket cf>221[2]42a=a>2201642(8/ id5"L16At/so_light(8At2153f4id52>gsref">ockfdmen8len}
f="n3t/sRECVeef="s class="s74SCf>20RECVeef=||tlr" 4lass="sref">err1625  8     82ss=7e" namelass="linei|eftimenewfd  8     8t" 7" p6 20ref">err   f">usockaddr = -gsref">ockfd_lookup____________________625  8     8t" 7" plass="lime/aCme/3COMPA3916>2141642218y_socke">out<class="linei|ef64139       21"7r2116       215ef2ss=7e" 5ame="L7At/so_light(8A52123e52Rineeeeee48nket co7_Sf>221[2]42a=a>2201642 *       }
f="n3t/scl23erradd    22"L125  8     /a>, 2211ss8442a=a>2201642err2161le" class="5ref8=53CCEPeineeeeee48nket co7_ACCEPelook    21
24set/sock";
221[2]42a=a>2201642 3352  4 5  21ef="+code=f8_inst8e4/5ocd4353rlen="L16640" class="l3ubuf hre4=f">a3c5pt<4a53>gsref">ockfdf"ef="="s3_storagfa>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl5cvL17_nos"5citimenewfd;
440533"8id="L87a81ref="22ref>221unl5ke4g_ce"43e=ECONNAeme/aDt521"a>5422"L1707" cla8s="li81<4s="s/*me/aC4e/aCOMPATf">ECONNABORTEDm4/5"sr*4ou5ECONNABORTEDm4/5"ut215rr24/a>;3<5 he4e54ine1"2   kernel 21tc.beca
ECONNABORTEDm4/5"="sref"4e5>20nee="4 21
ECONNABORTEDm4/5" 3352  4 5NVAt/so_light(8"INVAt5123  5422"L1707" cla8s="li81<3an cl_fddddd;
;"+coddhe=ea protocol handlodskett wants tolaaC4e/aCOMPATf">ECONNABORTEDm4/5"I4E"net/s5  22a, , soc22aet>220y_so51" id="Lme5o81ref="22ref>221684f5imene551" id="L namk81ref="22ref>2211ss84'22the>221ttempt to c4n_too33"L214ck>219sref"5+4od8t/soc5ettimenewfd42a=a>225164224o55>gsref">ockfd_lookup_l4f=inket iopspt4mkss="ce" 21opsamks class="sref8="line"familypt4mkss="ce" 21familye=/09clasmsg37srd"4class="NPROTO651" id="L1634fNPROTOamksst35clas49">soc22aet>220y_so5ass="s74SC5>20] /="line" na4<8   22a5f4fti55L1651" class="line" no7_ACCEPelook  pr81r2222"sref21et/>2pr81r2dd    22"L125  8KERN_CRI.c#L1651" id="L1KERN_CRI.ccept407" cla8s="lcoding">"protocol ket.cd9clasmsNPROTO(ket.cd)\n""L76214LLcla"n8tad71codeopspt4mkss="ce" 21opsamks class="sref8="line"familypt4mkss="ce" 21familye=/0" cla"n8tad71code="L7621215a>42a=a>2251642gsref">ockfd_lookup________g37srd"4class="NPROTO651" id="L1634fNPROTOamkss c4n_too33"L214ck>219sref"5+"L87ameso5coa081ref="22ref>2210>219sref"5+a4
ref"co5  a181ref="22ref>2211ss845.c#L1557a)_ef="=gets class="l324_55   21" class="li8e" na3"sref">5ke">e4/soc54>out,
2211684
spin_endept4mkss="ce" 21epin_endedd   copy_+code=s1id="ef"*s _family_endept4mkss="ce" 21*s _family_endeamkss c4n_too33"L214ck>219sref"5>ock4d_loo5up_l3srecas23f="+cod8t/so5keeee560a he should.be SMP safe.>LL_DEFrcu_deafeeafnce_protectee=f8_inst8>4ut  8*s _familiesocd4>out2211ss845timen5w51" id="Lm81ref="22re">ockfd_lookup________g37srd"4class="endedep_is_hele=f8_inst8>4ut4="sr_ef=*/219sref"5na4e"/CO4P5Ta>640a hendcas23f="+cod85/sock5eeeeBINDineeeeeln8l35clas49">soc22aet>220y_so5NT_Mss="sr5faa181ref="22ref>2211ss845timen5w51" id="Lm81ref="22reMP safe.>LL_DEFrcu_refign_po3_rer=f8_inst8>4ut  8*s _familiesocd4>out219sref"5>>42a=a>225 348pt<4a83de=adkely>gsre5">ock56>gsref">ockfd_lookup_o7_ACCEPelook    21
219sref"5>"L87ameso5a hendcas23f="+cod8t/sock5eeeeC5NNECeineeeeee4 class="l3219sref"5>1]  22" c5n3424e" na href=inket 5d=a> 56   21" class="li8e" na3"sref">5ht" 468Ta>540a hendcas23f="+cod8t/so5keeee56eso81ref="22ref>2211684
pr81r2222"sref21et/>2pr81r2dd    22"L125  8KERN_INFO651" id="L1634fKERN_INFOccept407" cla8s="lcoding">"NET: R2g"L22redLprotocol family ket.cd\n""L76214LLcla"n8tad71codeopspt4mkss="ce" 21opsamks class="sref8="line"familypt4mkss="ce" 21familye=/0s c4n_too33"L214ck>219sref"5igtimenew45a ha081ref="22ref>2210>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl5socket<4ef5"37msg_4e" na hrefne" nah5" cla5s47e"  class="l34="sr_ef=*/  8NABO162g"L22rpt4mkss="ce" 21et/8162g"L22rdd  s c4n_too33"L214ck>219sref"5ia4e"/CO4P5nos" citimenewfd;
219sref"5iT_Mss="sr5citimenewfd;
ECONNABORTEDm4/5socket<4et5 348pt<4sket.c#Lenderpke"5outECONNABORTEDm4/5s"L87ameso5s23f="+cod8t/sockeeeeeGET54fnNA5722"L1707" cla8s="li81<3" cla_fddddd@family:Lprotocol family to removee/aC4e/aCOMPATf">ECONNABORTEDm4/5sT_Mss="sr5das47(8/a>       8<21Time5625;
ra_e/aC4e/aCOMPATf">ECONNABORTEDm4/5s1]  22" c5nos" citimenewfd;
;
;"+coddhe=ea protocol handlodskett wants tolaaC4e/aCOMPATf">ECONNABORTEDm4/5/a> vL17_n5s" citimenewfd;
n4wnewdNABORT creahe=eECON4Ae"+c42rr" c="+code=err" cla5640a hendc5s23f="+cod8t/sockeeeeeGET5EERNA5822"L1707" cla8s="li81<4223mt_CON4Ae"+c42rr" c="+code=err" cla56   471Ta>5das48    8<21Out of bandi5=25;a module,t;
;
222522222588=22"2       22the loc3t.c#L_fdddddrr"=ops clascreahe aoute=aECON4Ae"+c42rr" c="+code=err" cla56"L87ameso5cas23f="+cod8t/sockeeeeeS5fnkeP5822"L1707" cla8s="li81<3" cla_="L762148     ="li*s =c4ass="4ine5/ss="ser4a5f="+code=fput_ls=3comme385tt1+c5de=errvoidc=ndry ligtimeneet/81un62g"L22rpt4mkss="ce" 21et/81un62g"L22rdd   81ref="22ref>2211ssfamilypt4mkss="ce" 21familye=/0s8     ="li*s =c4ass="4ine5/1]  22" c5/81/a>}
21 ct>21"a> = soc22aet>220y_so5<21t7     5 21     3  str38clas79">s5c22ke58eso81ref="22ref>2211684
BUG_O.c#L1651" id="L1BUG_O.dd    22"L125  8familypt4mkss="ce" 21familye=/09clAMELE1nam422 na>22l    familypt4mkss="ce" 21familye=/09clasmsg37srd"4class="NPROTO651" id="L1634fNPROTOamkss c4n_too33"L214ck>219sref"5ss3f"> cla5s="srefa href="+c3f="="3r5stora59s<&dec4n_too33"L214ck>219sref"5s40a hendc5="L762167       21
219sref"5.3219>    5  21sref">fd  8*s _familiesocd4>outNUhramkss c4n_too33"L214ck>219sref"5.a4e"/CO4P5"sref"ef="="sra>;3219sref"5sa> vL17_n5ci1" name="L1617  name to5709221<5socket<4hr538>2172       21a>2222222222k4ly>gssynchronize_rcupt4mkss="ce" 21eynchronize_rcudd   s c4n_too33"L214ck>219sref"5s"L87ameso5newfd;
 3   L13ok5t1m 85951" id="Lm81ref>2211684
pr81r2222"sref21et/>2pr81r2dd    22"L125  8KERN_INFO651" id="L1634fKERN_INFOccept407" cla8s="lcoding">"NET: Un62g"L22redLprotocol family ket.cd\n""L76214LLcla"n8tad71codefamilypt4mkss="ce" 21familye=/0s c4n_too33"L214ck>219sref"5>upmen8len5/81/a>}
21 ct>21"a> =   8NABO1un62g"L22rpt4mkss="ce" 21et/81un62g"L22rdd  s c4n_too33"L214ck>219sref"6ss3s8     6 21ockaddr7*)3am79m3=6L21oc60s<&dec4n_too33"L214ck>219sref"6s13s8     6 "L762167       21
  8NABO1inis=f8_inst8>4ut(8/a>  6   =r60CCEPe35clas49">soc22aet>220y_so6a"4>220   6         gsref">ockfd81ref="22ref>2211ss84'22the>221ttempt to c4n_too33"L214ck>219sref"6enew40a he6dry id="_ligtimenew40a hr6f) id6"L1651" class=" claef="=getsock4>;
rer >ubuf href="+co416
 3   L13ok6ef =r6051" id="Lm81ref>2211684
  21
219sref"6 8a href="6A81/a>}
21 ct>21"a> = 21s60_Mss="srefaa1be SMP safe.>LL_DEF  21
4ut219sref"6enew40a he6dry id="_ligtimenew40a hr6f) id61s<&dec4n_too33"L214ck>219sref"6
;
rer >ubuf href="+co416
0)
<22"sr6d7rlen"7class=22a4">220416a>21r61ine1"2   kernel 21tc.beca
}
21 ct>21"a> = 221ttempt to c4nnecl41n6wfdke614a)_ef="=gets422"L125  8Nkb1inis=f8_inst8>4ut219sref"6egsrec4n_too33"L214ck>219sref"6e6a href="6"8ARCH_WANT_ hr_SOCKETef=6a83de61Rineeeeee48nk" claef="=getsock4>;
rer >ubuf href="+co416
7a href="6s fo  id="="linecall *88a6 cl2161e=err" claef="=getsock4>;
raLLLLLLLL_fdddddInisializedrr"=protocols moduleECON4Ae"+c42rr" c="+code=err" cla6e8a href="651" de*.oizeoff2id="L22(<6>22id6122"L1707" cla8s="li81<440" cLLLLLLLL_="L762148     ="li*s =c4ass="4ine689a href="6       21a>(8/ id=6L16At/so_light(8At2126f3)i8624addas47ass="422"L125  8inis1in>  cacee=f8_inst8>4ut  caceedd   s c4n_too33"L214ck>219sref"6/a>(8/ id=6L16At/so_light(8At2126f6)i862(8/ id=6L16At/so_light(8At2126f3)i862CCEPeineeeeee+code=s1id="ef"  21
4ut4ut219sref"6(8/ id6"L16At/so_light(8At2163f4id62>gsref">ockfd_lookup_l4f=inket i  21
4ut219sref"6  4  22" c6ass="li8e" na82d=4L122"426a83de62de=ad22="s>2222222222k4ly>gssABO1mns=f8_inst8>4ut4ut4ut219sref"6<6a href="6ame="L7At/so_light(8A62123e62ght" 674SCref="s class="s74SCf>2IS_ER1651" id="L1634fIS_ER1dd    22"L125  8NABO1mns=f8_inst8>4utsoc22aet>220y_so6=a4
ref"co6ment"> *         8NABO1mns=f8_inst8>4ut219sref"6<8a href="61>);
<21t/s>211" nameL2216     62_Mss="srefaa181ref="2gotoLcla"n8tad71codeous1mount=f8_inst8>4ut219sref"6 9a href="6"srSystem call vectors.216     62eso81ref="22r class="l3219sref"6cleaL22(up6 Saved 20% in.oize.216     63L1651" class=" claef="=getsock4>;
rerd;perform_so3_ la22r inis"+cosECON4Ae"+c42rr" c="+code=err" cla6out2161le" class="6ref8=63ine1"2   kernel 21tc.beca
219sref"6> 3352  4 6  21ef="+code=f8_inst8e4/6ocd4363rlen=#ifdefLcla"n8tad71codeCONFIG_NETFILTE1651" id="L1634fCONFIG_NETFILTE1Mss=c4n_too33"L214ck>219sref"6> 4  22" c6cdn1ubuf hre4=f">a3c6pt<4a63de=ad22="s>2222222222k4ly>gsL21fil22r_inis=f8_inst8>4ut219sref"6cvL17_nos"6citimenewfd;
219sref"6ca4
ref"co62222       22   4i>t33<6a>440633"8id="L87a81ref="22ref>2212211684
skb1916>2topying1inis=f8_inst8>4ut2topying1inisdd   s c4n_too33"L214ck>219sref"6gsref">unl6ke4g_ce"43e=ECONNAeme/aDt621"a>6422"L1#edeifc4n_too33"L214ck>219sref"6"sr*4ou6215rr24/a>;3<6 he4e64CCEPe4="sr_ef=*/ous=f8_inst8>4uterr20nee="4 21
ockfdf"ef="="s3_storagfa>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl6" 3352  4 6NVAt/so_light(8"INVAt6123  64new51" id="Lm81ref="22ref>221<6"I4E"net/s6  22a, 4uterr2211684
l6okup_643"8id="L87a81ref="22ref>2214ut4ut219sref"6=a4
ref"co6"ce" 21et/socket2tee="4y 6d="_l64e=err"la"n8tad71codeous1fs=f8_inst8>4uterr}
21 ct>2INVAt6123  64_Mss="srefaa1gotoLcla"n8tad71codeous=f8_inst8>4ut219sref"67c32a3    6  22a, 219sref"61" id="Lme6o81ref="22ref>221684f6imene651" idcla"n8tad71codecoa _inis"+co=f8_inst8>4ut  8NABO1inis=f8_inst8>4ut;
rerdearly inis"+coL_="L762148     ="li*s =c4ass="4ine6+4od8t/soc6ettimenewfd42a=a>226164224o65>gsre#ifdefLcla"n8tad71codeCONFIG_PROC_FS"+code=EC4Nt_enCONFIG_PROC_FS"ce" name="L1617ocket4ss=7sre6" 3352  4 6>20] /="line" na4<8   22a6f4fti65L1651voidc=ndry ligtimeneet/8s _seq_show=f8_inst8>4ut4ut4ut42a=a>2261642gsre35clas49">soc22aet>220y_so6+"L87ameso6coa081ref="22ref>2210>2211sscpupt4mkss="ce" 21cput to c4n_too33"L214ck>219sref"6+a4
ref"co6  a181ref="22ref>2211ss846.c#L1657a)_ef="=gets81ref="22ref>2211sscount2rpt4mkss="ce" 21count2r8634ams0 c4n_too33"L214ck>219sref"6
1]  22" c6ass="li8e" na82d=4Li_en346a>24_65   21" class="li8e" na3"sref">6ke">e4/soc64>out,
2211684
for_each_possible_cpupt4mkss="ce" 21for_each_possible_cpudd    22"L125  8cpupt4mkss="ce" 21cput tos8     ="li*s =c4ass="4ine6>ock4d_loo6up_l3srecas23f="+cod8t/so6keeee66s<&de=addra181reff="22ref>2211sscount2rpt4mkss="ce" 21count2r8634a+msg37srd"4class="per_cpupt4mkss="ce" 21per_cpudd    22"L125  8NABOets_in_use=f8_inst8>4ut219sref"6la8s<&de=a6dra181ref="22ref>2211ss846timen66(8/a>       8<6ght;
rerdIt c keb"=bugaheve,he=err"=way. 8)L_="L762148     ="li*s =c4ass="4ine6na4e"/CO4P6Ta>640a hendcas23f="+cod86/sock66>gsref">ockfd_lookup_l4f=inket icount2rpt4mkss="ce" 21count2r8634aclAMELs8     ="li*s =c4ass="4ine6> 3352  4 6faa181ref="22ref>2211ss846timen6w51" id="Lm81ref="22reMP safe.>LL_DEFcount2rpt4mkss="ce" 21count2r8634ams0 c4n_too33"L214ck>219sref"6>>42a=a>226 348pt<4a83de=adkely>gsre6">ock66>gsrec4n_too33"L214ck>219sref"6>"L87ameso6a hendcas23f="+cod8t/sock6eeeeC663"8id="L87a81ref="22ref>2214ut  8Neq=f8_inst8>4ut"NABOets:eun8d ket.cd\n""L76214LLcla"n8tad71codecount2rpt4mkss="ce" 21count2r8634s c4n_too33"L214ck>219sref"6la4
ref"co6faa181ref="22ref>2211ss846timen6w51" i class="l324e" na href=inket 6d=a> 66121  #edeifef>2211683 a> = __________href="+co48t/so44ass37e" CONFIG_PROC_FSL_="L762148     ="li*s =c4ass="4ine6ne">e4/soc640a hendcas23f="+cod8t/so6keeee66="ce" name="L1617ocket3sht" cl6igtimenew46a ha081ref="22ref>2210>4ut4ut4ut640a hendcas23f="+cod8t/so6keeee67  8     /a>, 4ut221;
soc22aet>220y_so6iT_Mss="sr6citimenewfd;
  8mm_seg4ass_h=f8_inst8>4ut4ut4ut219sref"6socket<4et6 348pt<4sket.c#Lenderpke"6out2225  8     8t" 7" plassvao=f8_inst8>4ut4ut219sref"6s"L87ameso6s23f="+cod8t/sockeeeeeGET64fnNA67Rineeeeee48nk81ref="22ref>2211ssreNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl6sT_Mss="sr6das47(8/a>       8<21Time6625221;
2214ut219sref"6/a> vL17_n6s" citimenewfd;
221<17o=f8_inst8>4ut4ut4ut219sref"6socket<4e=6s35e" n42092       20" cl6ss="s684addas47ass="422"L125  8Nes1fs=f8_inst8>4ut219sref"6sa8s<&de=a6s23f="+cod8t/sockeeeeeGET6EERNA681" id="L namk8loo!kup_l4f=inket i  21
6das48    8<21Out of bandi6=254ut4ut219sref"6sa4e"/CO4P6nos" citimenewfd;
219sref"66T_Mss="sr6s" citimenewfd;
3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl66ocket<4et6f388pt<4a83de=ad22="s>222622222688=22" class="l321ss="lineeeeee48nket i6/ss="ser4a6f="+code=fput_ls=3comme386tt1+c6de=err" class
4ut4ut}
21 ct>21"a> = 4ut221s6c22ke68eso8135clas49">soc22aet>220y_so6ss3f"> cla6s="srefa href="+c3f="="3r6stora694addas47ass="422"L125  8mm_seg4ass_h=f8_inst8>4ut4ut4ut219sref"6s40a hendc6="L762167       21
    6  21sref">fd;3219sref"6sa> vL17_n6ci1" name="L1617  name to6709  8Nes1fs=f8_inst8>4ut219sref"6socket<4hr638>2172       21a>2222222222k4ly>gs  21
221<17o=f8_inst8>4ut4ut4ut219sref"6s"L87ameso6newfd;
2214ut219sref"6sss="ser4a6>    "comment"> 3   L13ok6t1m 86951" id="Lm81r8loo!kup_l4f=inket i  21
upmen8len6/81/a>}
21 ct>21"a> = 4ut219sref"6.21t7     6endry id="_ligtimenew40a 6ref=r69="ce" name="L1617ocket3sht" cl7ss3s8     7 21ockaddr7*)3am79m3=7L21oc70s<&de=addra18f"ef="="s3_storagfa>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl7s13s8     7 "L762167       21
(8/a>  7   =r70="ce" name="L1617ocket4ss=7sre7a"4>220   7         gsre" class
4ut4ut21w40a ha081ref="22ref>2210>soc22aet>220y_so7
2225  8     8t" 7" pifreq=f8_inst8>4ut21w40a ha081ref="22ref>2210>2211ssreNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl7e7a href="7A    "comment"> 3   L13ok7ef =r703"8id="L87a81ref="22ref>221 = 21s708"8id="L87a81ref="22ref>2212>4ut219sref"7 9a href="7Andry id="_ligtimenew40a 7codes70eso81ref="22r_lookup_l4f=inket icopy_in_userpt4mkss="ce" 21copy_in_userdd   ref="22ref>2212>4ut2>4ut4ut221ftimenew7enew40a he7dry id="_ligtimenew40a hr7f) id7"L1651" class="line" n21et/socket24="sr_ef=*/220417a>21r71  8     /a>, o7_ACCEPelook    21
221<17o=f8_inst8>4ut4ut2>4ut219sref"7"L7men8len7/81/a>}
21 ct>21"a> = gsref">ockfd_lookup_l4f=inket i  21
221ttempt to c4nnecl41n7wfdke7151" id="Lm81ref="22ref"ef="="s3_storagfa>3
reNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl7egsrec4n_too33"L214ck>219sref"7e6a href="7"8ARCH_WANT_ hr_SOCKETef=7a83de71ght" 674SCref="s class="s74SCf>2copy_in_userpt4mkss="ce" 21copy_in_userdd   ref="22ref>2212>4ut4ut221ftimenew7e7a href="7s fo  id="="linecall *88a7 cl2171e=err" claef="=getsoc21et/socket24="sr_ef=*/789a href="7       21a>219sref"7/a>(8/ id=7L16At/so_light(8At2127f3)i8724adda class="l3(8/ id=7L16At/so_light(8At2127f3)i872CCEPe" class
4ut4ut21w40a ha081ref="22ref>2210>(8/ id7"L16At/so_light(8At2173f4id72_Mss=35clas49">soc22aet>220y_so7/4'22t7222       22   4if (<4 8r7f=}=r72L1651" class=code=fp.c#L16_t.c#8658so4pat_ifconf=f8_inst8>4ut21ifcs functi/>2>4ut219sref"7/2225  8     8t" 7" pifconf=f8_inst8>4ut21ifc=f8_inst8>4ut219sref"7/6a href="7ame="L7At/so_light(8A72123e72ght" 674SCref25  8     8t" 7" pifconf=f8_inst8>4ut21w40a ha081ref="22ref>2210>219sref"7/7a href="7ment"> *       4ut21w40a ha081ref="22ref>2210>219sref"7/8a href="71>);
<21t/s>211" nameL2217     72_Mss="srefaa125  8     8t" 7" pifreq=f8_inst8>4ut21w40a ha081ref="22ref>2210>2>4ut2212>4ut2211ssreNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl7cleaL22(up7 Saved 20% in.oize.217     732161le" class="7ref8=73CCEPeineeeeee="s class="s74SCf>2copy_sock_userpt4mkss="ce" 21copy_sock_userdd   copy_+code=s1id="ef"ifcs functi/>2>4ut221ftimenew7s="sref"4e7r 3352  4 7  21ef="+code=f8_inst8e4/7ocd4373new51" id="Lm81ref="22ref>221<7> 4  22" c7cdn1ubuf hre4=f">a3c7pt<4a73de=ad22="s>2222222222k4ly>gsmems7o=f8_inst8>4ut4ut4ut219sref"7cvL17_nos"7citimenewfd;
2ifcs functi/>2>4utsoc22aet>220y_so7ca4
ref"co72222       22   4i>t33<7a>44073e=err" claef="=getsoco7_ACCEPelook  ifcs functi/>2>4ut219sref"7aaa"4class7"8ine" 85cod8=na4<8   22a7f="L773_Mss="srefaa181ref="2o7_ACCEPelook  ifc=f8_inst8>4ut2ifc_lenfuncti/>2>4ut219sref"7a9a href="7.reca081ref="22ref>2210><7pan c73eso81ref="22ref>22116o7_ACCEPelook  ifc=f8_inst8>4ut2ifc_req=f8_inst8>4utNUhramks c4n_too33"L214ck>219sref"7gsref">unl7ke4g_ce"43e=ECONNAeme/aDt721"a>74L1651" class="line" nref="22ref>2212>4ut<_space=f8_inst8>4ut<_spacedd   cizeof code=fp.c#L16_t.c#8658ifconf=f8_inst8>4ut219sref"7"sr*4ou7soc22aet>220y_so7"ut215rr24/a>;3<7 he4e74CCEPeineeeeee48nket co7_ACCEPelook  cize_h=f8_inst8>4ut21lenfuncti/>2>4ut2ifc_lenfuncti/>2>4ut4utsoc22aet>220y_so7"="sref"4e7>20nee="4 21
219sref"7" 3352  4 7NVAt/so_light(8"INVAt7123  7451" id="Lm81ref="22reMP safe.>LL_DEFuifcfuncti/>2>4ut<_space=f8_inst8>4ut<_spacedd   cizeof code=fp.c#L16_t.c#8658ifconf=f8_inst8>4ut21lenfuncti/>2>4ut219sref"7" 4  22" c7  22a, gsref">ockfd_lookup_o7_ACCEPelook  ifc=f8_inst8>4ut2ifc_lenfuncti/>2>4ut21lenfuncti/>2>4ut219sref"7"vL17_nos"71ref="22ref>2211684
l7okup_74Rineeeeee48nket co7_Sref="22ref>2212>4ut21ifc=f8_inst8>4ut2ifc_req=f8_inst8>4ut2212>4ut219sref"7"a4
ref"co7"ce" 21et/socket2tee="4y 7d="_l74e=err" claef="=getsoco7_ACCEPelook  ifrs functi/>2>4ut2ifcbuf=f8_inst8>4ut219sref"7"aa"4class78len}
21 ct>2INVAt7123  74_Mss="srefaa181ref="2fors class="s74SCf>2ifuncti/>2>4ut2>4ut2ifcs functi/>2>4ut2>4ut4utsoc22aet>220y_so7"9a href="7  22a, 2211666666666="s class="s74SCf>2copy_in_userpt4mkss="ce" 21copy_in_userdd   ref="22ref>2212>4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" class="line" nnnnnnnnnnnnnnnnn21et/socket24="sr_ef=*/221684f7imene7551" id="Lm81ref="22re">ockfd_ref="22ref>2212>4ut, 24o75_Mss="srefaa181ref="2 class="l320] /="line" na4<8   22a7f4fti7551" id="Lm81r class="l3gsref">ockfd="s class="s74SCf>2copy_to_userpt4mkss="ce" 21copy_to_userdd   ref="22ref>2212>4ut4ut4ut221ftimenew7|vL17_nos"7coa081ref="22ref>2210>22124_758"8id="L87a81ref="22ref>221<  21
221<17o=f8_inst8>4ut4ut2212>4ut219sref"7ke">e4/soc74>out,
ock4d_loo7up_l3srecas23f="+cod8t/so7keeee76s<&de=addra181refo7_S21et/sof="22ref>2211ssreNULsocket.c#L1="srd" c3ass="39msg_ce" na hrht" cl7la8s<&de=a7dra181ref="22ref>2211ss847timen76(8/a>       8<7ght2copy_sock_userpt4mkss="ce" 21copy_sock_userdd   copy_+code=s1id="ef"ifc=f8_inst8>4ut221ftimenew7na4e"/CO4P7Ta>640a hendcas23f="+cod87/sock76_Mss="srefaa181ref="221et/socket24="sr_ef=*/ 3352  4 7faa181ref="22ref>2211ss847timen76new51" id="Lm81ref="22ref>221<7>>42a=a>227 348pt<4a83de=adkely>gsre7">ock76de=ad22="s>2222222222k4ly>gsifrfuncti/>2>4ut21ifc=f8_inst8>4ut2ifc_req=f8_inst8>4utvL17_nos"7a hendcas23f="+cod8t/sock7eeeeC763"8id="L87a81ref="22ref>2212>4ut2ifcbuf=f8_inst8>4ut219sref"7la4
ref"co7faa181ref="22ref>2211ss847timen76e=err" claef=fors class="s74SCf>2ifuncti/>2>4ut2212>4ut219sref"7>1]  22" c7n3424e" na href=inket 7d=a> 76_Mss="srefaa181refcla"n8tad71codeifuncti/>2>4ut4ut21ifcs functi/>2>4ut2212>4ut2ifc_lenfuncti/>2>4ut219sref"7>e">e4/soc740a hendcas23f="+cod8t/so7keeee76eso81ref="22ref>22cla"n8tad71codeifuncti/>2>4ut4ut2212>4ut4utsoc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2212>4ut4ut221ftimenew7ia8s<&de=a7"37msg_4e" na hrefne" nah7" cla7751" id="Lm81ref="22re">ockfd_21et/socket24="sr_ef=*/740a hendcas23f="+cod8t/so7keeee77  8     /a>, ;
gsrec4n_too33"L214ck>219sref"7s"L87ameso7s23f="+cod8t/sockeeeeeGET74fnNA77ght" 674SCref="s class="s74SCf>2ifcs functi/>2>4utsoc22aet>220y_so7sT_Mss="sr7das47(8/a>       8<21Time7625;
rerd;
 vL17_n7s" citimenewfd;
2ifc=f8_inst8>4ut2ifc_lenfuncti/>2>4ut219sref"7sa8s<&de=a7s23f="+cod8t/sockeeeeeGET7EERNA7851" id="Lm81ref="22reref="22ref>2212>4ut219sref"7s   471Ta>7das48    8<21Out of bandi7=252>4ut2ifuncti/>2>4ut219sref"7sa4e"/CO4P7nos" citimenewfd;
soc22aet>220y_so76T_Mss="sr7s" citimenewfd;
LL_DEFifcs functi/>2>4ut2ifuncti/>2>4ut219sref"7socket<4et7f388pt<4a83de=ad22="s>2227222227851" id="Lm81r class="l32copy_to_userpt4mkss="ce" 21copy_to_userdd   ref="22ref>2212>4ut2>4ut4ut221ftimenew7/ss="ser4a7f="+code=fput_ls=3comme387tt1+c78e=err" claef="=getsoc21et/socket24="sr_ef=*/}
21 ct>21"a> = 7<21t7     7 21     3  str38clas79">s7c22ke78ss="srefaa81r21et/so0 c4n_too33"L214ck>219sref"7ss3f"> cla7s="srefa href="+c3f="="3r7stora794adda class="l3    7  21sref">fd4ut4ut21w40a ha081ref="22ref>2210>221ftimenew7.a4e"/CO4P7"sref"ef="="sra>;3soc22aet>220y_so7sa> vL17_n7ci1" name="L1617  name to77094ut21w40a ha081ref="22ref>2210>219sref"7socket<4et738>2172       21a>2222222222k4ly>gsbool=f8_inst8>4ut21convers1in=f8_inst8>4ut2false=f8_inst8>4ut2214ut2false=f8_inst8>4ut219sref"7s"L87ameso7newfd;
2214ut21buf_cize=f8_inst8>4ut2ALIGN=f8_inst8>4ut4ut219sref"7sss="ser4a7>    "comment"> 3   L13ok7t1m 879e=err" claef=code=fp.c#L16_t.c#8658ethtool_rxnfc=f8_inst8>4ut21w40a ha081ref="22ref>2210>219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8     8t" 7" pifreq=f8_inst8>4ut21w40a ha081ref="22ref>2210>2211684
us functi/>2>4ut2214ut7*)3am79m3=8L21oc804addas47ass="422"L125  8us functi/>2>4ut  8us functi/>2>4utfd2211ssr7o=f8_inst8>4ut;3219sref"8enew40a he8dry id="_ligtimenew40a hr8f) id80L1651" class=="s class="s74SCf>2ges10a ha081ref="22ref>ges10a hdd   ref="22ref>2212>4ut2>4ut2>4ut2ifru_datafuncti/>2>4ut219sref"8e5ew40a he8d8>2172       21a>gsref">ockfd_lookup_21et/socket24="sr_ef=*/21ss="lineeeeee48nket i8e7a href="8A    "comment"> 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnfc=f8_inst8>4ut219sref"8 8a href="8A81/a>}
21 ct>21"a> = 21s80   21" class="li8e" na3"sref">8 9a href="8Andry id="_ligtimenew40a 8codes80eso81ref="22r_lookup_l4f=inket iges10a ha081ref="22ref>ges10a hdd   ref="22ref>2214ut4ut4ut219sref"8enew40a he8dry id="_ligtimenew40a hr8f) id8"L1651" class="line" n21et/socket24="sr_ef=*/220418a>21r81  8     /a>, o claef="=getsock4>;
rerdMost ethtool code=furas are defin_sowithous paddingECON4Ae"+c42rr" c="+code=err" cla8"L7men8len8/81/a>}
21 ct>21"a> = gsre2   kernel 21tc.beca
 ethtool_rxnfcr4>; keexcephe=eECON4Ae"+c42rr" c="+code=err" cla8"new40a he8e>221ttempt to c4nnecl41n8wfdke8151" i2   kernel 21tc.beca
222witchookup_l4f=inket i thcme=f8_inst8>4utsoc22aet>220y_so8e6a href="8"8ARCH_WANT_ hr_SOCKETef=8a83de81ght" 674SCrefdefaultr" 4lass="sref">errETHTOOL_GRXCLSRLAhrMss=r" 4lass="sref">err22116o claef="=getsock4>;
rerdBufferecizer4>;variableL_="L762148     ="li*s =c4ass="4ine8/a>(8/ id=8L16At/so_light(8At2128f3)i882s<&de=addra181refo7_S="s class="s74SCf>2ges10a ha081ref="22ref>ges10a hdd   ref="22ref>2214ut4ut4ut219sref"8/a>(8/ id=8L16At/so_light(8At2128f6)i88251" id="Lm81ref="22re">ockfd_21et/socket24="sr_ef=*/(8/ id=8L16At/so_light(8At2128f3)i882CCEPeineeeeee48nket c="s class="s74SCf>2rule_cnt=f8_inst8>4ut4ut  8us functi/>2>4ut219sref"8/L7men8len8"L16At/so_light(8At2183f4id82_Mss="srefaa181ref="22222222221et/socket24="sr_ef=*/LL_DEFbuf_cize=f8_inst8>4ut4ut  8us functi/>2>4utgsref">ockfd_lookup_o claef="=getsock4>;
rerdf+coLthroughL_="L762148     ="li*s =c4ass="4ine8/6a href="8ame="L7At/so_light(8A82123e82ght" 674SCrefcasesg37srd"4class="ETHTOOL_GRXRINGS"+code=EC4Nt_enETHTOOL_GRXRINGSMss=r" 4lass="sref">err *       errerrerr254ut;
rerdf+coLthroughL_="L762148     ="li*s =c4ass="4ine8out2161le" class="8ref8=83CCEPeineeeeeecasesg37srd"4class="ETHTOOL_SRXCLSRLDEref="+c4d8=2241>ETHTOOL_SRXCLSRLDErMss=r" 4lass="sref">errLL_DEFbuf_cize=f8_inst8>4ut4ut 3352  4 8  21ef="+code=f8_inst8e4/8ocd438351" id="Lm81ref="22reMP safe.>LL_DEFconvers1in=f8_inst8>4ut254utubuf hre4=f">a3c8pt<4a83>gsref">ockfd_lookup_breakass="39msg_ce" na hrht" cl8cvL17_nos"8citimenewfd;
440833"8id="L87a81ref="22ref>2212212>4ut21so4pat_alloc210><_space=f8_inst8>4ut<_spacedd   MP safe.>LL_DEFbuf_cize=f8_inst8>4ut9a href="8.reca081ref="22ref>2210><8pan c83eso81ref="22ref>2211684
rxnfc=f8_inst8>4ut2212>4ut21ALIGN=f8_inst8>4ut4ut219sref"8gsref">unl8ke4g_ce"43e=ECONNAeme/aDt821"a>84L1651c4n_too33"L214ck>219sref"8gleaL22(up8et.c#L1640" iVikelyke">ou82>4ut2>4ut2>4ut2>4ut2>4ut219sref"8"ut215rr24/a>;3<8 he4e84CCEPeineeeeee48nket c21et/socket24="sr_ef=*/20nee="4 21
219sref"8" 3352  4 8NVAt/so_light(8"INVAt8123  84L1651" class=="s class="s74SCf>2put_userpt4mkss="ce" 21put_userdd   MP safe.>LL_DEFconvers1in=f8_inst8>4ut2211684
rxnfc=f8_inst8>4ut, gsref">ockfd_lookup______copy_+code=s1id="ef"ifrfuncti/>2>4ut2>4ut2ifru_datafuncti/>2>4ut219sref"8"vL17_nos"81ref="22ref>2211684
l8okup_84Rineeeeee48nket co7_S21et/socket24="sr_ef=*/221}
21 ct>2INVAt8123  84_Mss="srefaa1="s class="s74SCf>2convers1in=f8_inst8>4utsoc22aet>220y_so8"9a href="8  22a, 22116r claef="=getsock4>;
rerdWe expe=fptheret221684f8imene8551" i707" cla8s="li81<440" cLLLLLLLLLLLLLLLL*="L762148     ="li*s =c4ass="4ine81ut, 2214ut4ut4ut2m_ext=f8_inst8>4ut24o85_Mss="srefaa181ref="22222222222222cizeof 422"L125  8so4pat_rxnfc=f8_inst8>4ut4ut2m_ext=f8_inst8>4ut20] /="line" na4<8   22a8f4fti8551" id="Lm81ref="22re/a>, 4ut2m_ext=f8_inst8>4utgsref">ockfd_lookup______22222222cizeof 422"L125  8rxnfc=f8_inst8>4ut4ut2m_ext=f8_inst8>4ut219sref"8|vL17_nos"8coa081ref="22ref>2210>219sref"8|a4
ref"co8  a181ref="22ref>2211ss848.c#L185e=err" claef="=getsoc4ut2locahe=e=f8_inst8>4ut219sref"8|aa"4class8ass="li8e" na82d=4Li_en348a>24_85_Mss="srefaa181ref="2.c#8reeecopy_sock_userpt4mkss="ce" 21copy_sock_userdd   copy_+code=s1id="ef"ifcs functi/>2>4ut2locah13scizeof code=fp.c#L16_t.c#8658 code=fp.c#L16_t.c#"srefoffsetofdd   code=fp.c#L16_t.c#8658so4pat_ethtool_rxnfc=f8_inst8>4ut2offsetof=f8_inst8>4ut4ut2locah13scizeof code=fp.c#L16_t.c#8658 code=fp.c#L16_t.c#"srefoffsetofdd   code=fp.c#L16_t.c#8658so4pat_ethtool_rxnfc=f8_inst8>4ut4ut2211ssreNULsocket.c#L1="sr8" c3ass="38msg_ce" na hrht" cl7la8s<8de=a786f=*/soc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2ine81="sref"4e8164221ifc=f8_inst8>4utgsref">ockfd_lookup______22222222cizeof 422"L125  8rxnfc=f8_inlenfun8>4ut2m_ext=f8_inst8>4ut21ifc=f8_inst8>4ut4ut 3358  4 786Cf>2m_ext=f8_inst8>4ut84L1651c4n_too33"L214ck>219sref"8gleaL22(up8et.c#L1640" iVikelyke">"4ine81 4  22" c81642gsref">ockfd_lookup______22222222cize>4ut4ut2m_ext=f8_inst8>4uuuuuuuuuuuuuuuuuu"s class="s74SCf>2ges10a ha081ref="22ref>ges10a hdd   ref="22ref>221gsref">ockfd_lookup______22222222cize>4ut4ut21ifc=f8_inst8>4utgsref">ockfd_lookup______22222222cizet_ethtool_rxnfc64Cf>2offsetof=f8_inlenfun8>4ut2>4ut22121ifc=f8_inst8>4ut"4ine81 4  22" c81642gsref">ockfd_lookup______22222222cize>4ut4ut2ifc_lenfuncti/>2>4ut84L1651c4n_too33"L214ck>219sref"8gleaL22(up8et.c#L1640" iVikelyke">"4ine81 4  22" c81642ges10a hdd   ref="22ref>2214ut2>4ut4uttttttttttttttttttt+8     ="li*s =c4ass="4ine81 4  22" c816424ut4ut221ftimenew7ia8s<&de=a7"37msg_4e" na hrefne" nah7" cla7751"8id="Lm81re8="22re">ockfd_21et/socket84="sr8ef=*/ockfd_lookup_breakass="t/so7keeee87  8     /a>, ;
22124_758"8id="L87a81ref="22ref>221<  21
221<  21
4ut4uterr}
21 ct>2INVAt81>;
2ifc_lenfuncti/>2>4u16173FAUL=" c3ass="s49">soc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2ine81="sref"4e8164221ifc=f8_inst8>4utgsref">ockfd_lookup______22222222cizeof 422"L125  8rxnfc=f8_inlenfun8>4ut2ifc=f8_inst8>4ut2ifc_lenfuncti/>2>4uLLLLLLLLLLLLLLLLL(Cmest t21ifc=f8_inst8>4ut4ut4ut219sref"8gleaL22(up8et.c#L1640" iVikelyke">s10a ha081ref="22ref>ges10a hdd   ref="22ref>221gsref">ockfd_lookup______22222222cize>4ut"4ine81 4  22" c81642gsref">ockfd_lookup______22222222cize>4ut;
21ifc=f8_inst8>4utgsref">ockfd_lookup______22222222cizet_ethtool_rxnfc64Cf>2offsetof=f8_inlenfun8>4ut2ifc8lenfuncti/>2>4ut2m_ext=f8_inst8>4ut21ifc=f8_inst8>4ut"4ine81 4  22" c81642gsref">ockfd_lookup______22222222cize>4ut219sref"7socket<4et7f388pt<4a88Cf>2m_ext=f8_inst8>4uuuuu4crt" 348pt<4a81651c4n_too33"L214ck>219sref"8gleaL22(up8et.c#L1640" iVikelyke">s10a ha081ref="22ref>ges10a hdd   ref="22ref>2214ut4ut4ut221ftimenew7ia8s<&de=a7"37msg_4e" na hrefne" nah7" cla7751"8" c3ass="38msg_ce" na hrht" cl7/1]  82" c7881/a>}na hrefne" nah7" cla7751"8e" na3"sre8">7<21t7     7 21     3  8tr38c89erdBufferecizer4>;variableL_="L762148   8     ="li*s =c4ass="4ine8e}
21 ct>2INVAt81so0 c4n_to833"L214ck>219sref"7ss3f">8cla7s89f=*/sA81/a>optimistof=f, we only f"8gime_ 8634ar"+code=err" cla81" id="Lme8o81refadda class8"l322"+code=err" cla81" id="Lme8o81refa4SCf>2ifc81ref="22ref>2210>; keexcephe=eECON4Ae"+c42rr"         * changeime_ copy f"unt in 22(u memrry, we"+code=err" cla81" id="Lme8o81refa4SCf>2ifc810>4utl_rxnfcr4>; keexcephe=eECON4Ae"+c42rr"         * origina81y given (asime_ u2(u bef">err2210>4utsoc  ="li*s =c4ass="4ine8/a>(8/ id=8L16At/so_light1684
us functi/>2>4ut2214ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9  8us 9uncti/>2>4utsoc1684
us functi/>2>4ut  8us 9ul34ut221
us functi/>2>4ut4utttttttttNNAeme/aDt821"a>84L1651c4n_too33"L214ck>219sref"8gleaL22(up8et.c#L1640" iVikelyke">s10a ha081ref="22ref>ges10a hdd   ref="22ref>221gsref">ockfd_lo(8At2fse>22re[0]S>4ut;
gsref">ockfd_lo(8At2fse>22re[0]S>4ut221<9Cf>2i9ru_datafuncti/>2>4utLL_DEFbuf_cize=f8_inst8>4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9<7c3ass="39md   cizeof code=fp.c#L169ef="890f=f8_inst8>4utockfd_lookup_breakass=9at_ptrpt4m9ss="ce" 21co4pat_ptrdd   9ef="29022ref>221ockfd_lookup_breakass=9a9_ptrpt4m9sa081ref="22ref>2210>}na hrefne" nah7" cla7751"9fc=f8_inst9>4ut = ockfd_lookup_breakass=9" c3ass="39msg_ce" na hrht" cl8
ockfd_lookup_breakass=9";
rerdMost ethtool co9e=fur9s are 67       21
ges10a hdd   siocwandevp8et.sref">fd4ut2>4utu>4ut9ethtoo8len}
21 ct>2INVAt89e8e>221tte9pt to c4nnecl41n8wfdke8159" i2 9 kernel 21tc.bt21ifc=f8_inst8>4ut4uturs1in86a 7ref=r78   21" class="li9i6c3ass="39e=ad22="s>222witchookup_l9f=ink914SCf>2false=f8_inst8>4ut4ut4ut2>4uturs1"iin86a 7ref=r78   21" class="li9i7c3ass="39_so8e6a href="8"8ARCH_WAN9_ hr_918ifreq=f8_inst8>4ut219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8uket.c#Lenderpke8" u=f8_inst8>4ut2212>4ut2212>4ut221221  8uket.c#Lenderpke8" u=f8_insct8>4ut22116o claef="=gets9ck4>;9rerdBuffereciz16173FAUL=" c3ass="s49">soc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2copy_sof"ifrfuncti/>2>4utu>4ut2212>4ut4ut4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9id="Lm81re9="22re">ockfd_21et/socket94="sr92La>(8f">ockfd_lookup_breakass=9t8>4ut  8us f42soc  ="li*s =c4ass="4ine8/a>(8/ id=8L16At/so_lighturs1"ifrfuncti/>2>4uturs1"iin86S="s class="s74SCf>2ge_sof"ifrfuncti/>2>4utu>4ut, gsref">ockfd_lo4et"setting>up______22222222cizeifshLrs8pt<4a84>gsref">ocshLrs8fo7_it_+code=s1id="ef"ifr_ifruf9="srefaa189ref="22222222221et/socket94="sr9ef=*/221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9i8e>221tte94ut;
gsref">ockfd_lookup_o c9aef="924SCf>2false=f8_inst8>4ut4uturs1in86"8A    "comment"> 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnurs1"ifrfuncti/>2>4uturs1"iin86t8>4ut219sref"8" 3352  4 8NVAt/so_liurs1in=f8_inst8>4uturs1in86S="s class="s74SCf>2ge_sof.c#Lenderpke8" u=f8_insc8  22a, gsref">ockfd_lo4et"setting>up______22222222cizeifshLrs8pt<4a84>gsref">ocshLrs8fo7_____22222222cize>aw_hdle81 4  22" c81642aw_hdlefo7_it_+code=s1id="ef"ifr_ifruf9=1casesg3797srd"4class="ETHTOOL_GRXC9SRULE92q=f8_inst8>4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas92rcasesg379rd"4class="ETHTOOL_SRXCLS9LINS"938ifreq=f8_inst8>4ut4ut2524_758"8id="L87a81ref="22ref>221<  21
221<  21
ockfd_lookup_breakass=9eecasesg379rd"4class="ETHTOOL_SRXCLS9LDEre93f=*/fd4ut4ut4ut254ut4ut4ut93c8pt<8len}
21 ct>2INVAt8939msg_ce" 9a hrht" cl8cvL17_nos"8cit9menew938ifreq=f8_inst8>4ut219sref"7s1]  22" c7/81/a>}ksof.c#Lenderpke8" k=f8_inst8>4ut2214ut219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8uket.c#Lenderpke8" u=f8_inst8>4ut<_spacedd   MP safe.9LL_DE9buf_cize=f8_inst8>4ut}old_5>gsref">ockfd_loold_5>_inst8>4ut4ut4utous=f8_in9o33"L214ck>219sref"8gsref9>unl8942214ut21ifc=f8_inst8>4ut4ut}
21 ct>2INVAt89at_ptrpt4m9ss="ce" 21co4pat_ptrdd   9ef="29ref>221221<  21
22 class="8ref8=83CCEPeineee9ncti/>2>4u92i94etsock4>;
rerdf+coLthroughL_="L76rd"4BONDRELEASEef>221<  21
22 class="8ref8=83CCEPeineee9n9msg_ce" 9ee48nket co7_S21et/socket94="sr94"+code=EC4Nt_enETHTOOL_GRXRINGSMsrd"4BONDSETHWADDRef>221<  21
22 class="8ref8=83CCEPeineee9nref class9msg_ce" na hrht" cl8"a4
r9f"co894ode=EC4N16173THTOOL_GRXCLSRLCN=Msrd"4BONDCHANGEACTIVEef>221<  21
22 class="8ref8=83CCEPeineee9no4pat_all9"srefaa1="s class="s74SCf92conv9rs1in=f8_inst8>4utfromc22aet>220y_so7igtimenew4fromc22aep8et.c#L1640" iVikelyke">ksof.c#Lenderpke8" k=f8_ins8t/soc8634amsg37sketat_ifreq=f8_inst8>4ut2212>4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9cLLLLLLLLL9LLLLLL* fs.ring_cookie an9 afpt95ref>2211ssreNULsocket.c#L1="sr9="22ref>229684f8imene8551" i707"9cla8s9"li81<440" cLLLLLLLLLLLLLLLL*="L76214old_5>gsref">ockfd_loold_5>_ins"8A    "comment"> a>(85>gsref">ockfd_loa>(85>p8et.cnecalls7imene75L1651" clas9s1id="ef"f9=f8_inst8>4ut2m_ext=f8_inst8>4u    "comment"> s>(85>gsref">ockfd_los>(85>p8et.    "comment"> KERNEL_Derr4ut2m_ext=f8_inst8>4ut
22124_758"8id="L87a81ref="22ref>221<  21
4ut4ut2m_ext=f8_inst8>4ut21ifc=f8_inst8>4ut2geksof.c#Lenderpke8" k=f8_inscnecalls7imene75L1651" clas91cti/>2>4u9=f8_inst8>4ut2m_ext=f8_inst8>4ut(85>gsref">ockfd_los>(85>p8et.    "comment"> old_5>gsref">ockfd_loold_5>_inscnecalls7imene75L1651" clas919msg_ce" 9nket co7_Sclass="s74SCf>29UILD_95f=*/4ut29ocahe=e=f8_inst8>4ut4ut4ut221<  21
22 class="8ref8=83CCEPeineee9"=getsoc4ut221<  21
22 class="8ref8=83CCEPeineee9"LLLLLLLLL9s<&de=addra181refo7_S21et9sof="96s74SCf>25uncti/>2>4ut221221  8uket.c#Lenderpke8" u=f8_insct8>4utsoc22aet>220y_so7igtimenew47a ha081ref="s class="s74SCf>2ge_sof.c#Lenderpke8" u=f8_insc8  22a, 2>4ut2>4ut2>4ut4ut4utttttttttf="22ref>221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9"id="ef"fs9refaa181ref="221et/socket94="sr96f>2m_ecalls7imene75L1651" clas9"1id="ef"f9msg_ce" na hrht" cl7> 3359  4 796Cf>2m_ext=f8_inst8>4u>;3219sref"8enew40a he8dry id="_ligtimenew40a hr8f) id80L1651" class=="s class="s74SCf>2ges10a ha081ref="22ref>ges10a hdd   ref="22ref>2212>4ut2>4ut2>4u9_inst8>4ut2m_ext=f8_inst8>4uuuuuuuuuf="22ref>221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9"9msg_ce" 9ti/>2>4ut2>4ut221 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnfc=f8_inst8>4ut4ut2ifc_lenfuncti/>2>4ut2tee="4y 8d="_l843Mss=c4n_too33"L214ck>219sref"8" 3352  4 8NVAt/so_li 21
p "L762167       21
p2ge_sof.c#Lenderpke8" u=f8_insc8  22a, 2>4ut2>4ut2>4ut4utttttttttf="22ref>221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9 c3,ecizeo9 code=fp.c#L16_t.c#8658so9pat_i97ref>2211ssreNULsocket.c#L1="sr9id="Lm81re9="22re">ockfd_21et/socket94="sr97f=*/24_758"8id="L87a81ref="22ref>221<  21
, 4uts9/a>;
221ftimenewNOd"4TLCMDtime_ 7oizes fo NOd"4TLCMD="linecalls7imene75L1651" clas9 1id="ef"f9a hrht" cl7iT_Mss="sr7cit9menew97e" na4<8   22ef">ockfd_lookup_breakass=9 1id="ef"f9"l3ockfd_lookup_breakass=9 9msg_ce" 94utfd4ut4ut;
2ifc_lenfuncti/>2>4uuuuuuuuuuuuuuuuuutool_ioctodd   code=fp.c#L16_t.c#865817o=f8_inst8>4ut4ut;
}
21 ct>2INVAt89SCf>2ifc=f9_inst8>4ut2ifc_lenfunc8_inst8>4ut219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8u*s Mssrefaa181ref39msg_c*s Mss6f>2m_necalls7imene75L1651" clas9)s *ecizeo9 code=fp.c#L16_t.c#8658so9pat_i9req=f8_inst8>4charef="+code=f8_instmp_bu.class="s74SCf>2tmp_bu.q=f8[copy_+code=s1id="ef"ifrs functi/>2>4ut2>4ut21ifc=f8_inst8>4ut2m_necalls7imene75L1651" clas9)a>;
;
4ut2>4ut;
219sref"7socket<4et7f389pt<4a98Cf>2m_ext=f8_16173FAUL=" c3ass="s49">fromc22aet>220y_so7igtimenew4fromc22aep8et.c#L1640" iVikelyke">tmp_bu.class="s74SCf>2tmp_bu.q=f8[0]S="s cl2  4 8NVAt/so_liu*s Mssme" c3ass="39msg_c*s Mssme/so4c8  22a, 2of4et"221o" c3hLcopy_+code=s1id="n_lykefuncti/>2>4ut2>4ut2212m_ext=f8_16173FAUL=" c3ass="__Mss=c4n_too33"L214ck>21__Mss=c4n_ 3352  4 8NVAt/so_li 21
me" c3ass="39msg_   8me>2m_S="s class="s74SCf>2ge_*s Mssme" c3ass="39msg_c*s Mssme/so4c8  22a, 2>4ut2>4ut7<21t7     7 21     3  9tr38c99erdBufferecizer4>;varf="22ref>221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" clas9so0 c4n_to933"L214ck>219sref"7ss3f">9cla7s992214ut2m_"8A    "comment"> 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnfc=fme" c3ass="39msg_   8me>2m_cnecalls7imene75L1651" clas9adda class9"l3ockfd_lookup_breakass=9a4SCf>2ifc91ref="22ref>2210>221  8u*s Mssrefaa181ref39msg_c*s Mss6f>2m_ct8>4ut;
221ftimenew7.a4e"/9O4P7"99f>2m_ecalls7imene75L1651" clas9a4SCf>2ifc910>sDon't checkimees_ u2(u accesses, just letimektigetimrappe="n3t8soc4e84eso81ref="22ref>22119a1id="ef"f9>4utl_rxnfcr4>; keexcephe=eECON4Ae"* in me_ s="li handl(u instead."+code=err" cla81" id="Lme8o81re9aineeeeee49dd   cizeof code=fp.c#L169t.c#8958ifrel_rxnfcr4>; keexcephe=eECON4Ae"*="+code=err" cla81" id="Lme8o81re9ac78e=err"91ref="22ref>2210>220y_so7igtimenew4toc22ae1ref="s class="s74SCf>2ge_*s Mssrefaa181ref39msg_c*s Mss6f>2m_c8  22a, 2of4et"221o" c3hLcopy_+code=s1id="n_lykefuncti/>2>4ut2getmp_bu.class="s74SCf>2tmp_bu.q=f8[0]Serr" cla81" id="Lme8o81re9a c3ass="39ha081ref="22ref>2210>4ut2>4ut2210>30e_rdBufferecizer4>;varf="22ref>221ftimenew7|efktime_ 7oizes fo  id="="linec/pre>2t863bf/b6/d15450fba4d3b53f435fcc10ef9acbc5f8d2_3/30e_c>_+code=s1id="ef"ifr_lyk30e1cnt863430e3"L214ck>219sref"7ss3f"30e3">30e4g_ce"43e=ECONNAeme/aDt821"a>84L__Mss=c4n_too33"L214ck>21__Mss=c4n_125  8so4pat_rxnfc=frefaa181ref39msg_ 21
re>2m_S="s class="s74SCf>2ge_*s Mssrefaa181ref39msg_c*s Mss6f>2m_c8  22a, 2>4ut2>4ut219sref"8"ut215rr24/a>;3<8 30e3cnt863430eref="22ref>2210>30ef=*/221ftimenew7.a4e"30ef>>30ea>;
24_758"8id="L87a81ref="22ref>221<  21
22130e0>>30e5_datef">ockfd_lookup_breakass30e6cnt863430e4ut30e6=*/30e7" 2167       21
fdfd4ut4ut4ut4ut2>4utu>4ut219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8uket.c#Lenderpke8" u=f8_inst8>4ut1cnt863430class="line" n21et/socke30cla>30>4g_ce"43e=ECON 21
4ut2cnt863430msg_ce" na hrht" cl8
30>La>(8f">ockfd_lookup_breakass30>3cnt863430ck4>;
rerdMost ethtool c30ck4>30>3>;
4ut221221  8uket.c#Lenderpke8" u=f8_insct8>4ut4cnt863430aLLLLLLLL_ Unfortunately30aLL>30>a>;
soc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2copy_sof"ifrfuncti/>2>4utu>4ut2>4utu>4ut30>Cf>2m_ext=f8_inst8>4u/IFNAMSIZ8634s1c4n_too33"L214ck>219sref"8"ut215rr24/a>;3<8 3016cnt863430e=ad22="s>222witchookup_30e=a>30>6=*/30>7>;
4ut221221<  21
8cnt863430a href="8s fo  id="="lin30a h>30>ef>2212>4ut9cnt863430rd"4class="ETHTOOL_GRXCL30rd">30>9f>2m_ext=f8_1617!_inst8>4ut}
21 ct>2INVAt302_cnt86343022ref>22116o claef="=get3022r>3022f>2m_ext=f8_inst8>4ueca
4ut}
21 ct>2INVAt3021cnt863430at_rxnfc642<->_+code=s30at_>302s74SCf>253022cnt863430="22re">ockfd_21et/socke30="2>302FNAMSIZfuncti/>2>4ut3023cnt863430hrOC_MAX_SIZE8634a/Lcize30hrO>30258ifconf=f8_inst8>4utETHTOOL_GRXCLSRULEMsrd"4GIFMTUrr3024cnt863430ref="22222222221et/socke30ref>302f=*/3025cnt8634304ut302Cf>2m_ext=f8_inst8>4uETHTOOL_GRXCLSRULEMsrd"4GIFHWADDRef>221<  21
3026cnt8634302>gsref">ockfd_lookup_o 302>g>302Cf>2m_ext=f8_inst8>4uETHTOOL_GRXCLSRULEMsrd"4GIFINDEXef>221<  21
3027cnt863430esg37srd"4class="ETHTOOL30esg>302f=f8_inst8>4ut221<  21
3028cnt863430rd"4class="ETHTOOL_GRXCL30rd">30222ref>221221<  21
3029cnt8634307srd"4class="ETHTOOL_GRX307sr>302q=f8_inst8>4ut221<  21
303_cnt863430rd"4class="ETHTOOL_SRXCL30rd">30rd=f8_inst8>4ut221<  21
3031cnt863430t8>4ut>30rs74SCf>253032cnt863430351" id="Lm81ref="22rer 30351>30rFNAMSIZfuncti/>2>4ut3033cnt863430rd"4class="ETHTOOL_SRXCL30rd">30r58ifconf=f8_inst8>4utETHTOOL_GRXCLSRULEMsrd"4GMIIPHYef>221<  21
3034cnt863430code=fp.c#L16_t.c#8658et30cod>30rf=*/221<  21
3035cnt863430st8>4ut30rCf>2m_ext=f8_inst8>4utsoc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2>4utu>4ut2210>2>4utu>4ut2IZ8634s1c4n_too33"L214ck>219sref"8"ut215rr24/a>;3<8 3037cnt863430a hrht" cl8cvL17_nos"8ci30a h>30rf=f8_inst8>4ut215rr24/a>;3<8 3038cnt863430"l330r22ref>221ockfd_lookup_breakass3039cnt863430c210><_spacedd   MP safe30c21>30rq=f8_inst8>4uef">ockfd_lookup_breakass304_cnt863430dd   cizeof code=fp.c#L130dd >30dd>;
4ut219sref"8gsre30o33>30df=*/ockfd_lookup_breakass30d2cnt863430t30dLa>(8f">ockfd_lookup_breakass3043cnt863430eeeeee48nket c21et/socke30eee>30d are 67       21
fd4ut4ut4ut4ut2>4utu>4ut30d5i81<8len}
21 ct>2INVAt3046cnt86343030dCf>2m_ext=f8_8_inst8>4ut219sref"7s1]  22" c7/81/a>}ket.c#Lenderpke8" =f8_inst8>4ut30d8ifreq=f8_inst8>4ut4ut4ut2>4utu>4m
p"i_inst8>4ut30d22ref>221}old_5>gsref">ockfd_loold_5>_inst8>4ut30d9f>2m_ext=f8_1 21
4ut;
rerdWe expe=fp30ets>30eta>(8f">ockfd_lookup_breakass3051cnt863430LLLLLL* fs.ring_cookie a30LLL>30e2214ut2>4utu>4m
p"i_insf>2"s class="s74SCf>2ge_sof"ifrfuncti/>2>4utu>4ut, 2>4ut30e2214ut221fromc22aet>220y_so7igtimenew4fromc22aep8et.c#L1640" iVikelyke">ket.c#Lenderpke8" =f8_insass="s74SCf>2copy_sof"ifrfuncti/>2>4utu>4utket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_lykefuncti/>2>4ut4ut4ut30e3>;
4ut22121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeoem"star34 c4n_too33"L21mem"star3/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4ut4ut30ea>;
4ut22121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeoem"enst8>4ut2>4utu>4m
p"i_insc8  22a, 4ut4ut4ut30e5>;
4ut22121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizebase_addt.c#Lenderpke8" base_addt/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4ut4ut30e4SCf>2false=f8_inst8>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeir_too33"L214ck>219rq/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 219rq/so4t8>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizedmf8_inst8>4ut2>4utu>4m
p"i_insc8  22a, 4ut4ut4ut30e22ref>22122121__Mss=c4n_ 3352  4 8NVAt/so_liket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizepor34 c4n_too33"L21por3L1651" class=="s class="s7_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4ut30e9f>2m_ext=f8_16173FAUL=" c3ass="4ut30h_>;
219sref"8"ut215rr24/a>;3<8 3061cnt863430s<&de=addra181refo7_S21e30s<&>30href>2211ssreNULsocket.c#L1="s30h2cnt863430msg_ce" na hrht" cl7la8s30msg>30h2214utgsref">ockfd_loold_5>_ins"8A    "comment"> a>(85>gsref">ockfd_loa>(85>p8et.cnecalls7imene75L1651" cla30h3cnt8634308634, cizeof code=fp.c#L30863>30h3>;
4ut(85>gsref">ockfd_los>(85>p8et.    "comment"> KERNEL_Derr22124_758"8id="L87a81ref="22ref>221<  21
21ifc=f8_inst8>4utket.c#Lenderpke8" =f8_inscnecalls7imene75L1651" cla30h5cnt863430msg_ce" na hrht" cl7> 3330msg>30h5>;
4ut(85>gsref">ockfd_los>(85>p8et.    "comment"> old_5>gsref">ockfd_loold_5>_inscnecalls7imene75L1651" cla30h6cnt863430_inst8>4ut30h6=*/2>4ut30h7f>2m_ext=f8_16173FAUL=" c3ass=" nst8>4ut2214ut}
21 ct>2INVAt3068cnt8634302ifuncti/>2>4ut30h22ref>221221toc22aet>220y_so7igtimenew4toc22ae1ref=s="s74SCf>2copy_sof"ifrfuncti/>2>4utu>4utket.c#Lenderpke8" =f8_insas1copy_i40" iVikelyke">ket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_lykefuncti/>2>4ut4ut4ut30hq=f8_inst8>4ut22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeoem"star34 c4n_too33"L21mem"star3/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4ut30 c=f8_inst8>4ut22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeoem"enst8>4ut2>4utu>4m
p"i_insc8  22a, 4ut4ut30 s74SCf>25uncti/>2>4ut22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizebase_addt.c#Lenderpke8" base_addt/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4utockfd_21et/socke30="2>30 FNAMSIZfuncti/>2>4ut<>uncti/>2>4ut22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizeir_too33"L214ck>219rq/so4 2"s class="s74SCf>2ge_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 219rq/so4t8>4ut, 30 Cf>2m_ext=f8_inst8>4u    "comment"> 22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizedmf8_inst8>4ut2>4utu>4m
p"i_insc8  22a, 4ut4ut30 f>2m_ext=f8_inst8>4ut
22121__Mss=c4n_125  8so4pat_rxnket.c#Lenderpke8" =f8_inshLcopy_+code=s1id="_m
p "L762167      d="fm
p_ins____22222222cizepor34 c4n_too33"L21por3L1651" class=="s class="s7_som
p"ifrfuncti/>2>4utu>4m
p"i_insc8  22a, 4ut4ut30 Cf>2m_ext=f8_inst8>4uuuuuuuuuc#L16_t.c#8658s2IZ8634s1c4n_too33"L214ck>219sref"8"ut215rr24/a>;3<8 3077cnt8634304utockfd_lookup_breakass3078cnt863430f="=getsock4>;
rerd30 22ref>2214utockfd_lookup_breakass308_cnt863430>;
;
>30>;=*/4ut30>s74SC67       21
fdfd4ut4ut2>4utu>4ut30>}
21 ct>2INVAt3083cnt863430lenfuncti/>2>4ut30>58ifconf=f8_it21ifc=f8_inst8>4ut4uturs1in86t8>4ut30>a>;
4ut4ut4ut2>4uturs1"iin86t8>4ut2>4ut30>Cf>2m_ext=f8_8_inst8>4ut219sref"7s1]  22" c7/81/a>}
21 ct>21"a> =   8uket.c#Lenderpke8" u=f8_inst8>4ut219sref"7socket<4et7f330k>2>30>6=*/30>7>;
4ut221221  8uket.c#Lenderpke8" u=f8_insct8>4ut30>e" 21et/socket2tee="4y 8d="_l843"8ew4soc22aet>220y_so7igtimenew47a ha081ref="22ref>2210>2copy_sof"ifrfuncti/>2>4utu>4ut2212>4ut9cnt863430msg_ce" na hrht" cl7/1] 30msg>30>q=f8_inst8>4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" cla309_cnt863430">7<21t7     7 21     3 30">7>30">=*/219sref"7ss3f"3033">30"4g_ce"43e=ECONNAeme/aDt821"a>84LMss=c4n_too33"L214ck>219sref"8enew40a he8dry id="_lurs1"ifrfuncti/>2>4uturs1"iin86S="s class="s74SCf>2ge_sof"ifrfuncti/>2>4utu>4ut, 2>4ut30"FNAMSIZfuncti/>2>4ut219sref"8"ut215rr24/a>;3<8 3093cnt8634301ref="22ref>2210>30"f=*/221ftimenew7.a4e"30ef>>30"a>;
4ut4uturs1in86"8A    "comment"> 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnurs1"ifrfuncti/>2>4uturs1"iin86t8>4ut;
4ut4u>30"Cf>2m_ext=f8_16173FAUL=" c3ass="Mss=c4n_too33"L214ck>219sref"8" 3352  4 8NVAt/so_licrs1in=f8_inst8>4uturs1in86S="s class="s74SCf>2ge_sof.c#Lenderpke8" u=f8_insc8  22a, 2>4ut30"f=f8_inst8>4ut219sref"8"ut215rr24/a>;3<8 3098cnt8634301ref="22ref>2210>30"ef>2212>4ut2210>30"q=f8_inst8>4uifru_dafti7551" id="Lmc7ass="li8e" na82d=4Li_en347a>24_758"8id="L87a81ref="22ref>221<  21
215rr24/a>;3<8 31e_cnt863431e_cn1ref="22ref>2210>31e_rdBuef">ockfd_lookup_breakass31e1cnt863431e3"L214ck>219sref"7ss3f"31e3">310ref>2211ssreNULsocket.c#L1="s31e2cnt863431el3rtentry"ifrfuncti/>2>4utrtentry"i=f8_i8len}
21 ct>2INVAt31e3cnt863431eref="22ref>2210>3103>;
4ut4uuuuuuuuuc#L16_t.c#8658sr422ad1frfuncti/>2>4utrt22ad1h85class21et/>215rr24/a>;3<8 31e4cnt863431ef>221ftimenew7.a4e"31ef>>31ea>;
fd}rt2dsref>221<  21
stargetiaddtessnst8>4ut22131e0>>310Cf>2m_ext=f8_8_inst8>4ut}rt2gatewayef>221<  21
sgatewayiaddt (RTF_GATEWAY)4pa*="+code=err" cla81" id="Lme8o81r31e6cnt863431e4ut310Cf>2m_ext=f8_8_inst8>4ut}rt2genmas68e" na82d=4Li_ert2genmas6h85cluuuuucvers1in8634st35clas49">stargeti" iwork mas6 (IP)so4pa*="+code=err" cla81" id="Lme8o81r31e7cnt863431ed   cizeof code=fp.c#L131ed >310f=f8_inst8>4uunsigsr8dshortuuc#L16_t.c#8658sr42flag>gsref">ockfd_lor42flag>h85class21et/>215rr24/a>;3<8 31e8cnt863431eref="22ref>2210>31e22ref>2212>4utrt22adih85class21et/>215rr24/a>;3<8 31e9cnt863431ea081ref="22ref>2210>3109>;
4ut4uuuuuuuuuc#L16_t.c#8658sr422ad3frfuncti/>2>4utrt22ad3h85class21et/>215rr24/a>;3<8 311_cnt863431>4ut4u>31>42ifc_lenfuncunsigsr8dchareuuc#L16_t.c#8658sr42to>gsref">ockfd_lor42to>h85class21et/>215rr24/a>;3<8 3111cnt863431class="line" n21et/socke31cla>31>4g_ce"43e=ECOunsigsr8dchareuuc#L16_t.c#8658sr42s="ligsref">ockfd_lor42ref">h85class21et/>215rr24/a>;3<8 3112cnt863431msg_ce" na hrht" cl8
31122ref>221215rr24/a>;3<8 3113cnt863431ck4>;
rerdMost ethtool c31ck4>31>3>;
s+1 for binary ass="4ibility!a*="+code=err" cla81" id="Lme8o81r31>4cnt863431aLLLLLLLL_ Unfortunately31aLL>31>a>;
schare*a*="+code=I_inst8>4ut}rt2devef>221<  21
sfor ing me_ device atiaddo4pa*="+code=err" cla81" id="Lme8o81r3115cnt863431pt to c4nnecl41n8wfdke8131pt >3115>;
4ut4uuuuuuuuuc#L16_t.c#8658sr42mt2>4r42mtsper route MTU/Windowuuuuuuuuu*="+code=err" cla81" id="Lme8o81r3116cnt863431e=ad22="s>222witchookup_31e=a>3114SCf>2false=f8_inst8>4ut4uuuuuuuuuc#L16_t.c#8658sr42windowdatafuncti/>2>4r42windowh85cluuuuuucvers1in8634st35clas49">sWindowuin8mping              *="+code=err" cla81" id="Lme8o81r3117cnt863431_so8e6a href="8"8ARCH_WA31_so>311f=f8_inst8>4uunsigsr8dshortuuc#L16_t.c#8658sr42irtref>221<  21
sInitial RTT                  *="+code=err" cla81" id="Lme8o81r3118cnt863431a href="8s fo  id="="lin31a h>31>ef>22}lass21et/>215rr24/a>;3<8 3119cnt863431rd"4class="ETHTOOL_GRXCL31rd">31>9f>2mass21et/>215rr24/a>;3<8 312_cnt86343122ref>22116o claef="=get3122r>3122f>2m8_inst8>4ut2ges10a ha081refn6_rtmsgf>=f8_i8len}
21 ct>2INVAt3121cnt863431at_rxnfc642<->_+code=s31at_>312s74SCf>254ut4uuuuuc#L16_t.c#8658sr4msg2dsref>221<  21
215rr24/a>;3<8 3122cnt863431="22re">ockfd_21et/socke31="2>312FNAMSIZfuncti8_inst8>4ut4uuuuuc#L16_t.c#8658sr4msg2src8e" na82d=4Li_er4msg2srch85class21et/>215rr24/a>;3<8 3123cnt863431hrOC_MAX_SIZE8634a/Lcize31hrO>31258ifconf=f8_i8_inst8>4ut4uuuuuc#L16_t.c#8658sr4msg2gatewayef>221<  21
215rr24/a>;3<8 3124cnt863431ref="22222222221et/socke31ref>312a>;
4ut4uuuuuuuuu8>4uuuuuc#L16_t.c#8658sr4msg2typ  22a8f="L7838"8r4msg2typ h85class21et/>215rr24/a>;3<8 3125cnt8634314ut3125>;
4ut239msg_c1Cf>2m_ext=f8_inst8>4uuuuuuc#L16_t.c#8658sr4msg2dsr_leol_rxnfc64Cf>2ofr4msg2dsr_leoh85class21et/>215rr24/a>;3<8 3126cnt8634312>gsref">ockfd_lookup_o 312>g>3124SCf>2false=f8_inst8>4ut239msg_c1Cf>2m_ext=f8_inst8>4uuuuuuc#L16_t.c#8658sr4msg2src_leol_rxnfc64Cf>2ofr4msg2src_leoh85class21et/>215rr24/a>;3<8 3127cnt863431esg37srd"4class="ETHTOOL31esg>3127>;
4ut4uuuuuuuuu8>4uuuuuc#L16_t.c#8658sr4msg2metric8e" na82d=4Li_er4msg2metrich85class21et/>215rr24/a>;3<8 3128cnt863431rd"4class="ETHTOOL_GRXCL31rd">31222ref>2214uuuuuuuuu8>4uuuuuc#L16_t.c#8658sr4msg2info8e" na82d=4Li_er4msg2infoh85class21et/>215rr24/a>;3<8 3129cnt8634317srd"4class="ETHTOOL_GRX317sr>3129>;
4ut4uuuuuuuuu8>4uuuuuc#L16_t.c#8658sr4msg2flag>gsref">ockfd_lor4msg2flag>h85class21et/>215rr24/a>;3<8 313_cnt863431rd"4class="ETHTOOL_SRXCL31rd">31rd=f8_inst8>4u>4ut4uuuuuuuuu8>4uuuuuc#L16_t.c#8658sr4msg2ifindex8e" na82d=4Li_er4msg2ifindexh85class21et/>215rr24/a>;3<8 3131cnt863431t8>4ut>31rs74SC}lass21et/>215rr24/a>;3<8 3132cnt863431351" id="Lm81ref="22rer 31351>313La>(8f">ockfd_lookup_breakass3133cnt863431rd"4class="ETHTOOL_SRXCL31rd">313 are 67       21
fdfd4ut31rf=*/21ifc=f8_inst8>4ut4ut4ut3135i81<8len}
21 ct>2INVAt3136cnt863431a href="8cdn1ubuf h31a h>31rCf>2m_ext=f8_  21
215rr24/a>;3<8 3137cnt863431a hrht" cl8cvL17_nos"8ci31a h>31rf=f8_inst8>4ut21ifc=f8_inst8>1in86"8A    "comment"> NULL21ifc=f8_inst8>NULLh85class21et/>215rr24/a>;3<8 3138cnt863431"l331r22ref>2214ut}r=ad22="s>239msg_r6h85class21et/>215rr24/a>;3<8 3139cnt863431c210><_spacedd   MP safe31c21>31rq=f8_inst8>4un_userdd   ref="22ref>rtentryfrfuncti/>2>4utrtentry na h  22" c7/81/a>}refaa181ref39msg_reh85class21et/>215rr24/a>;3<8 314_cnt863431dd   cizeof code=fp.c#L131dd >31dd>;
219sref"8gsre31o33>3142214ut}rtdevef>221<  21
3142214ut}old_5>gsref">ockfd_loold_5>_ins"8A    "comment"> a>(85>gsref">ockfd_loa>(85>p8et.cnecalls7imene75L1651" cla3143cnt863431eeeeee48nket c21et/socke31eee>314f=*/, , , 2>4uts6_family_ins"88A    "comment"> AF_INET=ad22="s>239msg_AF_INET=_insc {ucvers1in8634st35clas49">sipv6 *="+code=err" cla81" id="Lme8o81r3145cnt863431ss="ce" 21co4pat_ptrdd  31ss=>314Cf>2m_ext=f8_inst8>4u8_inst8>4ut2ges10a ha081refn6_rtmsgf>=f8_ir" c3amsanet/sock   >21ifc=f8_inst8>4ut239msg_ur6h85c"8A    "comment"> argp "L762167      argp_insnecalls7imene75L1651" cla3146cnt863431314Cf>2m_ext=f8_inst8>4u
221fromc22aet>220y_so7igtimenew4fromc22aep8et.c#L1640" iVikelyke">r=ad22="s>239msg_r6h85c____22222222cizer4msg2dsref>221<  21
239msg_ur6h85cc8  22a, 221<  21
 n6_addt.c#Lenderpke8"  n6_addt na ct8>4ut31422ref>22122121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2typ  22a8f="L7838"8r4msg2typ h85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 4ut314q=f8_inst8>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2dsr_leol_rxnfc64Cf>2ofr4msg2dsr_leoh85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 2ofr4msg2dsr_leoh85cct8>4ut;
rerdWe expe=fp31ets>315c=f8_inst8>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2src_leol_rxnfc64Cf>2ofr4msg2src_leoh85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 2ofr4msg2src_leoh85cct8>4ut315s74SCf>25uncti/>2>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2metric8e" na82d=4Li_er4msg2metrich85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 4utf8imene8551" i70731684>315" na h8>4uuuuuuuuu8>4>uncti/>2>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2info8e" na82d=4Li_er4msg2infoh85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 4ut4ut315Cf>2m_ext=f8_inst8>4u    "comment"> r178e" na82d=4Li_ererh85cf|>22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2flag>gsref">ockfd_lor4msg2flag>h85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, gsref">ockfd_lor4msg2flag>h85cct8>4ut4ut315f=*/ r178e" na82d=4Li_ererh85cf|>22121__Mss=c4n_ 3352  4 8NVAt/so_lir=ad22="s>239msg_r6h85c____22222222cizer4msg2ifindex8e" na82d=4Li_er4msg2ifindexh85cS="s cl2  4 8NVAt/so_liur=ad22="s>239msg_ur6h85cc8  22a, 4ut4ut315;
4ut315Cf>2m_ext=f8_inst8>4u
2ger=ad22="s>239msg_r6h85class21et/>215rr24/a>;3<8 3157cnt863431nket co7_Sclass="s74SCf>31nke>31e7>;
sipv4 *="+code=err" cla81" id="Lme8o81r3158cnt863431st8>4ut31522ref>2212>4utrtentry"i=f8_ir" c3amsanet/sock   >21ifc=f8_inst8>4ut argp "L762167      argp_insnecalls7imene75L1651" cla3159cnt863431L16_t.c#8658so4pat_ifcon31L16>315q=f8_inst8>4ut221fromc22aet>220y_so7igtimenew4fromc22aep8et.c#L1640" iVikelyke">refaa181ref39msg_reh85c____22222222cizer42dsref>221<  21
31h_>;
4ut316s74SCf>25uncti/>2>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lirefaa181ref39msg_reh85c____22222222cizer42flag>gsref">ockfd_lor42flag>h85cS="s cl2  4 8NVAt/so_liurefaa181ref39msg_creh85cc8  22a, gsref">ockfd_lor42flag>h85cct8>4ut316" na h8>4uuuuuuuuu8>4>uncti/>2>4ut22121__Mss=c4n_ 3352  4 8NVAt/so_lirefaa181ref39msg_reh85c____22222222cizer42metric8e" na82d=4Li_er42metrich85cS="s cl2  4 8NVAt/so_liurefaa181ref39msg_creh85cc8  22a, 4ut316Cf>2m_ext=f8_inst8>4u    "comment"> r178e" na82d=4Li_ererh85cf|>22121__Mss=c4n_ 3352  4 8NVAt/so_lirefaa181ref39msg_reh85c____22222222cizer42mt2>4r42mt, 2>4r42mt4ut316f=*/ r178e" na82d=4Li_ererh85cf|>22121__Mss=c4n_ 3352  4 8NVAt/so_lirefaa181ref39msg_reh85c____22222222cizer42windowdatafuncti/>2>4r42windowh85cS="s cl2  4 8NVAt/so_liurefaa181ref39msg_creh85cc8  22a, 2>4r42windowh85cct8>4ut 3331msg>316Cf>2m_ext=f8_inst8>4u    "comment"> r178e" na82d=4Li_ererh85cf|>22121__Mss=c4n_ 3352  4 8NVAt/so_lirefaa181ref39msg_reh85c____22222222cizer42irtref>221<  21
22121__Mss=c4n_ 3352  4 8NVAt/so_lirtdevef>221<  21
221fromc22aet>220y_so7igtimenew4fromc22aep8et.212>4ut;
<8t/soc8634amsg37s    L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnrtdevef>221<  21
4ut4ut31hq=f8_inst8>4ut4u
2>4ut;
<8>4ut31 c=f8_inst8>4ut4u
4ut31 s74SCf>254utockfd_21et/socke31="2>31 FNAMSIZfuncti/>2>4ut4u
NULLh85class21et/>215rr24/a>;3<8 3173cnt8634317  8     /a>, 317f=*/31 f>2m_ext=f8_inst8>4ut
2gerefaa181ref39msg_reh85class21et/>215rr24/a>;3<8 3175cnt863431a hrht" cl7iT_Mss="sr7ci31a h>31 Cf>2m_ext=f8_ef">ockfd_lookup_breakass3176cnt863431"l33176=*/}
21 ct>2INVAt3178cnt863431f="=getsock4>;
rerd31722ref>2212IZ8634s1c4n_too33"L214ck>219sref"8"ut215rr24/a>;3<8 3179cnt863431I7722"L1707" cla8s="li8131I77>317q=f8_inst8>4ut}ou78e" na82d=4Li_eou7h85class21et/>215rr24/a>;3<8 318_cnt863431>;
;
>3180f>2m_ext=f8_ef">ockfd_lookup_breakass3181cnt863431_inst8>4ut318ref>2211ssreNULsocket.c#L1="s3182cnt863431 code=fp.c#L16_t.c#8658s31 co>3182214ut(85>gsref">ockfd_los>(85>p8et.    "comment"> KERNEL_Derr2>4ut3183>;
4ut221 22ref>221<  21
31>a>;
4ut(85>gsref">ockfd_los>(85>p8et.    "comment"> old_5>gsref">ockfd_loold_5>_inscnecalls7imene75L1651" cla3185cnt863431lenfuncti/>2>4ut318;
219sref"7socket<4et7f331k>2>31>6=*/<  22" c7/81/a>}ou78e" na82d=4Li_eou7h85c:
31>7>;
215rr24/a>;3<8 3188cnt863431claef="=getsoc21et/socke31cla>31>e" 21ef">ockfd_lookup_breakass3189cnt863431msg_ce" na hrht" cl7/1] 31msg>3189f>2mass21et/>215rr24/a>;3<8 319_cnt863431">7<21t7     7 21     3 31">7>31">=*/sSince old style bridge s="li's endup using rd"4DEVPRIVATE"+code=err" cla81" id="Lme8o81r3191cnt86343133"L214ck>219sref"7ss3f"3133">31"4g_cecvers1in8634st35clas49 >sfor some operations; thissfor es use of me_ newer bridge-utils meat"+code=err" cla81" id="Lme8o81r3192cnt863431"l331"FNAMScvers1in8634st35clas49 >suse ass="4ible s="lis"+code=err" cla81" id="Lme8o81r3193cnt8634311ref="22ref>2210>31"f=*/="+code=err" cla81" id="Lme8o81r3194cnt863431ef>221ftimenew7.a4e"31ef>>31"a>;
<67       21
 >4ut4ut21ifc=f8_inst8>4ut4ut4ut4u>31"Cf>2m_ext=f8_    "comment"> >4ut4ut31"f=f8_ecalls7imene75L1651" cla3198cnt8634311ref="22ref>2210>319e" 21et/socket2tee="4y 8d="_l843Mss=c4n_too33"L214ck>219sref"8enew40a he8dry id="_ltmp "L762167      tmp_insS1
4ut221ftimenew7|efktime_ 7oizes fo  id="="linecalls7imene75L1651" cla32e_cnt863432e_cn1ref="22ref>2210>3200" 21et/socket2tee="4y 8d="_l843tmp "L762167      tmp_ins"88A    "comment"> BRCTL_GET_VERrd"N "L762167      BRCTL_GET_VERrd"N_insc>4ut219sref"7ss3f"32e3">320s74SCf>25ockfd_lookup_breakass32e4cnt863432ef>221ftimenew7.a4e"32ef>>32ea>;
ockfd_lookup_breakass32e5cnt863432e0>ockfd_lo hdd   s165_s="li_tran>new40n_userdd   ref="22ref>filefuncti/>2>4ut2>4utfd4ut320Cf>2m_ext=f8_inst8>4uuuuuuuuuuunsigsr8d  21
4ut320f=f8_8len}
21 ct>2INVAt32e8cnt863432eref="22ref>2210>32e22ref>22121ifc=f8_inst8>4ut 3   L13ok8ef =r807addas47ass="422"L125  8so4pat_rxnarg "L762167      arg_inscnecalls7imene75L1651" cla32e9cnt863432ea081ref="22ref>2210>320q=f8_inst8>4un_userdd   ref="22ref>sN168e" na82d=4Li_esN16hLco f="n8t/soc86ethts68e" na82d=4Li_es6hLco >221, 4ut4u>32>42ifc_lenfuncPref">fd  8so4pat_rxns68e" na82d=4Li_es6hLcocnecalls7imene75L1651" cla3211cnt863432class="line" n21et/socke32cla>321ref>2211ssreNULsocket.c#L1="s3212cnt863432msg_ce" na hrht" cl8
32122ref>2212214ut4ut273FAUL=" c3ass="rd"4DEVPRIVATEt8>4ut4ut;
rerdMost ethtool c32ck4>321Cf>2m_ext=f8_inst8>4uifru_dafti7551" id="Lmsiocdevprivatess="li8e" na82d=4Li_esiocdevprivatess="lip8et.    "comment"> 22ref>221<  21
321a>;
ockfd_lookup_breakass3215cnt863432pt to c4nnecl41n8wfdke8132pt >3215>;
4ut}
21 ct>2INVAt3216cnt863432e=ad22="s>222witchookup_32e=a>321Cf>2m_ext=f8_case2214ut321f=f8_inst8>4ucase2214ut32122ref>221 argp "L762167      argp_inscnecalls7imene75L1651" cla3219cnt863432rd"4class="ETHTOOL_GRXCL32rd">3219=f8_inst8>4ucase2214ut22116o claef="=get3222r>322c=f8_inst8>4ut2>4utc7assff="="ip8et.    "comment"> 22ref>221<  21
322s74SCf>254utockfd_21et/socke32="2>322FNAMSIZfuncti/>2>4ut 22ref>221<  21
32258ifconf=f8_icase221rd"4ETHTOOLh85c:
322f>2m_ext=f8_inst8>4utifru_dafti7551" id="Lm 22ref>221<  21
3225>;
rd"4WANDEVh85c:
gsref">ockfd_lookup_o 322>g>322Cf>2m_ext=f8_inst8>4uifru_dafti7551" id="Lm hdd   siocwandevef>221<  21
 22ref>221<  21
32222ref>221322q=f8_inst8>4ut 22ref>221<  21
32rd=f8_inst8>4ucase2214ut4ut>323s74SCf>254ut32e" na h8>4uuuucase2214ut32358ifconf=f8_icase2214ut32rf=*/4ut4ut3235>;
4ut 22ref>221<  21
323f=f8_inst8>4ucase22132322ref>221<_spacedd   MP safe32c21>323q=f8_inst8>4ut 22ref>221<  21
324d=f8_inst8>4ucase221219sref"8gsre32o33>324s74SCf>25 22ref>221<  21
324" na h8>4uuuucase221324Cf>2m_ext=f8_inst8>4uifru_dafti7551" id="Lmdo siocg67 mpn>gsref">ockfd_lodo siocg67 mpn>1 22ref>221<  21
324Cf>2m_ext=f8_inst8>4uf="22refti7551" id="Lm hdd   siocshwt67 mp "L762167       hdd   siocshwt67 mpp8et.    "comment"> 22ref>221<  21
324f=f8_inst8>4ucase22132422ref>2213249=f8_inst8>4ucase221;
rerdWe expe=fp32ets>325d=f8_inst8>4ucase221325s74SCf>254utf8imene8551" i70732684>325" na h8>4uuuucase2214ut4ut32558ifconf=f8_icase2214ut325f=*/4ut3255>;
4ut325Cf>2m_ext=f8_case221 filefuncti/>2>4ut4ut325ef>2212>4ut3259=f8_inst8>4ucase221326d=f8_inst8>4ucase221326s74SCf>25326" na h8>4uuuucase22132658ifconf=f8_icase221326f=*/ 3332msg>3265>;
4ut326Cf>2m_ext=f8_case2212>4ut326f=f8_inst8>4ucase2214ut2>4ut32622ref>2214ut4ut3269=f8_inst8>4ucase221327d=f8_inst8>4ucase221327s74SCf>254utockfd_21et/socke32="2>327" na h8>4uuuucase2214ut, 32758ifconf=f8_icase2214ut327f=*/4ut327Cf>2m_ext=f8_case2214ut4ut;
rerd32722ref>2214ut4ut;
;
>328d=f8_inst8>4ucase2214ut4ut328s74SCf>254ut328" na h8>4uuuucase2212>4ut32858ifconf=f8_icase221328f=*/2>4ut3285>;
219sref"7socket<4et7f332k>2>328Cf>2m_ext=f8_case2214ut328f=f8_inst8>4ucase2214ut32822ref>2214ut3289=f8_inst8>4ucase2214ut7<21t7     7 21     3 32">7>329d=f8_inst8>4ucase2214ut219sref"7ss3f"3233">329s74SCf>254ut329FNAMSIZfuncti/>2>4utockfd_lod7assfsioc1 22ref>221<  21
221ftimenew7.a4e"32ef>>329f=*/4ut4u>329Cf>2m_ext=f8_case221329f=f8_inst8>4ucase2214ut2210>32922ref>221 22ref>221<  21
ockfd_lookup_breakass33e_cnt863433e_cn1ref="22ref>2210>3300" 21f">ockfd_lookup_breakass33e1cnt863433e3"L214ck>219sref"7ss3f"33e3">330s74SCf>25221ftimenewNOd"4TLCMD "L762167      wNOd"4TLCMD74SCnecalls7imene75L1651" cla33e2cnt863433el3ockfd_lookup_breakass33e3cnt863433eref="22ref>2210>330f=*/221ftimenew7.a4e"33ef>>330a>;
<67     long1
filefuncti/>2>4ut2>4ut22133e0>>330Cf>2m_ext=f8_inst8>4uuuuuuuuuuuuuuuunsigsr8dlong1
4ut330Cf>2m8len}
21 ct>2INVAt33e7cnt863433ed   cizeof code=fp.c#L133ed >330f=f8_inst8>4usref">fd2212>4ut, 2>4ut2IZ8634s1c4n_too33NOd"4TLCMD "L762167      wNOd"4TLCMD74SCnecalls7imene75L1651" cla33e9cnt863433ea081ref="22ref>2210>330q=f8_inst8>4un_userdd   ref="22ref>sN168e" na82d=4Li_esN16hLco f="n8t/soc86ethts68e" na82d=4Li_es6hLconecalls7imene75L1651" cla331_cnt863433>4ut4u>33>42ifc_lenfuncPref">fd331ref>2211ssreNULsocket.c#L1="s3312cnt863433msg_ce" na hrht" cl8
33122ref>221221, ;
rerdMost ethtool c33ck4>3313>;
4ut221  8so4pat_rxns68e" na82d=4Li_es6hLcocnecalls7imene75L1651" cla3314cnt863433aLLLLLLLL_ Unfortunately33aLL>331a>;
ockfd_lookup_breakass3315cnt863433pt to c4nnecl41n8wfdke8133pt >3315>;
, gsref">ockfd_loopshLcoc8  22a, 222witchookup_33e=a>331Cf>2m_ext=f8_inst8>4u
221, gsref">ockfd_loopshLcoc8  22a, 331f=f8_ecalls7imene75L1651" cla3318cnt863433a href="8s fo  id="="lin33a h>331e" 21et/socket2tee="4y 8d="_l843r178e" na82d=4Li_ererh85cf>>2IZ8634s1c4n_too33NOd"4TLCMD "L762167      wNOd"4TLCMD74SC c#L16c#L16ecalls7imene75L1651" cla3319cnt863433rd"4class="ETHTOOL_GRXCL33rd">331q=f8_inst8>4ut2214ut2214ut22116o claef="=get3322r>332c=f8_inst8>4ut221 22ref>221<  21
332ref>2211ssreNULsocket.c#L1="s3322cnt863433="22re">ockfd_21et/socke33="2>33222ref>221>2IZ8634s1c4n_too33NOd"4TLCMD "L762167      wNOd"4TLCMD74SCc>4ut332Cf>2m_ext=f8_inst8>4u
221ockfd_lo hdd   s165_s="li_tran>new40c#L16_t.c#8658sfilefuncti/>2>4utockfd_lookup_breakass3325cnt8634334ut3325>;
215rr24/a>;3<8 3326cnt8634332>gsref">ockfd_lookup_o 332>g>332Cf>2mef">ockfd_lookup_breakass3327cnt863433esg37srd"4class="ETHTOOL33esg>332f=f8_#endiff">ockfd_lookup_breakass3328cnt863433rd"4class="ETHTOOL_GRXCL33rd">332ef>2212>4ut332q=f8_  21
fd4ut33rd=f8_8len}
21 ct>2INVAt3331cnt863433t8>4ut>333s74SCf>25, gsref">ockfd_loopshLcoc8  22a, 4ut215rr24/a>;3<8 3332cnt863433351" id="Lm81ref="22rer 33351>3332>;
ockfd_lookup_breakass3333cnt863433rd"4class="ETHTOOL_SRXCL33rd">33358ifcZ8634s1c4n_too33XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1215rr24/a>;3<8 3334cnt863433code=fp.c#L16_t.c#8658et33cod>333a>;
ockfd_lookup_breakass3335cnt863433st8>4ut3335>;
<  21
4ut3337>;
, gsref">ockfd_loopshLcoc8  22a, 215rr24/a>;3<8 3338cnt863433"l3333e" 21ef">ockfd_lookup_breakass3339cnt863433c210><_spacedd   MP safe33c21>333q=f8_Z8634s1c4n_too33XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1215rr24/a>;3<8 334_cnt863433dd   cizeof code=fp.c#L133dd >3340" 21f">ockfd_lookup_breakass33d1cnt863433o33"L214ck>219sref"8gsre33o33>334s74SC  21
fdockfd_loflag>h85ccf">ockfd_lookup_breakass33d2cnt863433t334" na 8len}
21 ct>2INVAt33d3cnt863433eeeeee48nket c21et/socke33eee>334Cf>2m_ext=f8_n_userdd   ref="22ref>sN168e" na82d=4Li_esN16hLco f="n8t/soc86ethts68e" na82d=4Li_es6hLco >221, 334;
334Cf>2m_ext=f8_    "comment"> ert.c#Lenderpke8" erthLcoe>2212>4ut  8so4pat_rxns68e" na82d=4Li_es6hLcoc8  22a, , 2>4ut, 334f=f8_inst8>4ut4u
215rr24/a>;3<8 3348cnt863433msg_ce" na hrht" cl8"a4
33msg>334e" 21et/socket2tee="4y 8d="_l843ert.c#Lenderpke8" erthLcoe8l 2 0cf">ockfd_lookup_breakass33d9cnt863433"srefaa1="s class="s74SC33"sr>334q=f8_inst8>4ut}donefuncti/>2>4ut;
rerdWe expe=fp33ets>3350" 21f">ockfd_lookup_breakass3351cnt863433LLLLLL* fs.ring_cookie a33LLL>335s74SCf>25 ert.c#Lenderpke8" erthLcoe>221, gsref">ockfd_loopshLcoc8  22a, ockfd_loflag>h85ccnecalls7imene75L1651" cla3352cnt863433684f8imene8551" i70733684>33522ref>221}
21 ct>2INVAt3353cnt863433=f8_inst8>4ut335Cf>2m_ext=f8_inst8>4u
4ut335f=*/NULLh85class21et/>215rr24/a>;3<8 3355cnt863433=f8_inst8>4ut335Cf>2m_ext=f8_inst8>4ugoto]  22" c7/81/a>}donefuncti/>2>4ut4ut335Cf>2m_ext=f8_ef">ockfd_lookup_breakass3357cnt863433nket co7_Sclass="s74SCf>33nke>335f=f8_ecalls7imene75L1651" cla3358cnt863433st8>4ut335e" 21et/sockerf="n8t/soc86ethtoowsN168e" na82d=4Li_eoowsN16hLcocc8  22a, gsref">ockfd_loopshLcoe>221, gsref">ockfd_loopshLconecalls7imene75L1651" cla3359cnt863433L16_t.c#8658so4pat_ifcon33L16>3359=f8_inst8>4u2a, , gsref">ockfd_loopshLcoc8  22a, 21ifc=f8_inst8>own >hLcocnecalls7imene75L1651" cla336_cnt863433h_t.cclass="s74htool_rxn33h_t>3360" 21f">ockfd_lookup_breakass3361cnt863433s<&de=addra181refo7_S21e33s<&>336s74SC  22" c7/81/a>}donefuncti/>2>4ut336" na h8>4uuuuifru_dafti7551" id="Lm3363>;
ockfd_lookup_breakass3364cnt863433refaa181ref="221et/socke33ref>336f=*/3XPORT_SYMBOL1 3333msg>336;
4ut336Cf>2m  21
fd2>4ut336f=f8_inst8>4utockfd_loflag>h85ccf">ockfd_lookup_breakass3368cnt8634332ifuncti/>2>4ut33622ref8len}
21 ct>2INVAt3369cnt863433_inst8>4ut3369=f8_inst8>4uifru_dafti7551" id="LmL1658e" na82d=4Li_esN16hLcoc8  22a, gsref">ockfd_loopshLcoc8  22a, ockfd_loflag>h85ccnecalls7imene75L1651" cla337_cnt863433 c3a+=Lcizeof code=fp.c#33 c3>337d=f8_ef">ockfd_lookup_breakass3371cnt863433 code=fp.c#L16_t.c#8658s33 co>337s74SC  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1ockfd_21et/socke33="2>337" na ecalls7imene75L1651" cla3373cnt8634337  8     /a>, 33758ifc  21
fd4ut337Cf>2m_ext=f8_ifru_dafti7551" id="LmL1658e" na82d=4Li_esN16hLcoc8  22a, gsref">ockfd_loopshLcoc8  22a, ockfd_lookup_breakass3378cnt863433f="=getsock4>;
rerd33722ref  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1;
;
>338d=f8_  21
fd4ut338s74SCf>254ut338" na 8len}
21 ct>2INVAt3383cnt863433lenfuncti/>2>4ut33858ifconf=f8_iifru_dafti7551" id="LmL1658e" na82d=4Li_esN16hLcoc8  22a, gsref">ockfd_loopshLcoc8  22a, 338f=*/ockfd_lookup_breakass3385cnt863433lenfuncti/>2>4ut3385>;
<  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1219sref"7socket<4et7f333k>2>3386=*/338f=f8_  21
4ut3389=f8_8len}
21 ct>2INVAt339_cnt863433">7<21t7     7 21     3 33">7>339d=f8_inst8>4u="n8t/soc86ethtmm_segment_78e" na82d=4Li_emm_segment_7=f8_i="n8t/soc86ethtoldf>gsref">ockfd_looldf>hLcoe>221gsref">ockfd_log17_f>1219sref"7ss3f"3333">339s74SCf>25, 21ifc=f8_inst8>4ut339FNAMSIZfuncti  21
221ftimenew7.a4e"33ef>>339a>;
ockfd_lookup_breakass3395cnt86343310>2(chare2a, 21ifc=f8_inst8>4ut, 4ut4u>339Cf>2m_ext=f8_    "comment"> uop7len.c#Lenderpke8" uop7len74SCe>2(  21
339f=f8_ecalls7imene75L1651" cla3398cnt8634331ref="22ref>2210>33922ref>221gsref">ockfd_los17_f>1>23FAUL=" c3ass="SOL_SOCKEktime_ 7oizes forOL_SOCKEk74SCc>4ut221219sref"7ss3f"34e3">340s74SCf>25221, gsref">ockfd_loopshLcoc8  22a, 221ftimenew7.a4e"34ef>>34042ref>221gsref">ockfd_los17_f>1gsref">ockfd_looldf>hLcocnecalls7imene75L1651" cla34e5cnt863434e0>340Cf>2mef">ockfd_lookup_breakass34e7cnt863434ed   cizeof code=fp.c#L134ed >340f=f8_  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL12210>340q=f8_  21
4ut4u>341c=f8_inst8>4ut4ut341ref>28len}
21 ct>2INVAt3412cnt863434msg_ce" na hrht" cl8
34122ref>221gsref">ockfd_looldf>hLcoe>221gsref">ockfd_log17_f>1;
rerdMost ethtool c34ck4>3413>;
, 21ifc=f8_inst8>4ut341f=*/341;
222witchookup_34e=a>341Cf>2m_ext=f8_    "comment"> uop7vai8e" na82d=4Li_euop7vaihLcoe>2(chare2a, 21ifc=f8_inst8>4ut, 341f=f8_ecalls7imene75L1651" cla3418cnt863434a href="8s fo  id="="lin34a h>34122ref>221gsref">ockfd_los17_f>1341q=f8_inst8>4u16173FAUL=" c3ass="levei8e" na82d=4Li_eleveihLcof>>23FAUL=" c3ass="SOL_SOCKEktime_ 7oizes forOL_SOCKEk74SCc>4ut22116o claef="=get3422r>342c=f8_inst8>4ut221342s74SCf>25ockfd_21et/socke34="2>342FNAMSIZfuncti/>2>4ut<
221, gsref">ockfd_loopshLcoc8  22a, 342Cf>2m_ext=f8_inst8>4uuuuuuuuuuuuuuuuuuuuuuuuuuuuu
gsref">ockfd_los17_f>1gsref">ockfd_looldf>hLcocnecalls7imene75L1651" cla3425cnt8634344ut3425>;
gsref">ockfd_lookup_o 342>g>342Cf>2mef">ockfd_lookup_breakass3427cnt863434esg37srd"4class="ETHTOOL34esg>342f=f8_  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1342ef>2212>4ut342q=f8_  21
343c=f8_inst8>4ut, ockfd_loflag>h85ccf">ockfd_lookup_breakass3431cnt863434t8>4ut>343ref>28len}
21 ct>2INVAt3432cnt863434351" id="Lm81ref="22rer 34351>34322ref>221, gsref">ockfd_loopshLcoc8  22a, ockfd_lookup_breakass3433cnt863434rd"4class="ETHTOOL_SRXCL34rd">343Cf>2m_ext=f8_inst8>4uifru_dafti7551" id="LmL1658e" na82d=4Li_esN16hLcoc8  22a, gsref">ockfd_loopshLcoc8  22a, , ockfd_loflag>h85ccnecalls7imene75L1651" cla3434cnt863434code=fp.c#L16_t.c#8658et34cod>343a>;
ockfd_lookup_breakass3435cnt863434st8>4ut3435>;
, ockfd_loflag>h85ccnecalls7imene75L1651" cla3436cnt863434a href="8cdn1ubuf h34a h>343Cf>2mef">ockfd_lookup_breakass3437cnt863434a hrht" cl8cvL17_nos"8ci34a h>343f=f8_  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1343ef>2212>4ut<_spacedd   MP safe34c21>343q=f8_  21
4N16178e" na82d=4Li_esN1617a href="n8t/soc86ethtsN168e" na82d=4Li_esN16hLcoth  21
4ut344d=f8_8len}
21 ct>2INVAt34d1cnt863434o33"L214ck>219sref"8gsre34o33>344s74SCf>25 mm_segment_78e" na82d=4Li_emm_segment_7=f8_i="n8t/soc86ethtoldf>gsref">ockfd_looldf>hLcoe>221gsref">ockfd_log17_f>1344FNAMSIZfuncti  21
344f=*/gsref">ockfd_los17_f>13445>;
221, gsref">ockfd_loopshLcoc8  22a,  s17_f>gsref">ockfd_los17_f>1gsref">ockfd_looldf>hLcocnecalls7imene75L1651" cla3447cnt863434ee48nket co7_S21et/socke34ee4>344f=f8_ecalls7imene75L1651" cla3448cnt863434msg_ce" na hrht" cl8"a4
34msg>344e" 21et/sockeifru_dafti7551" id="Lmert.c#Lenderpke8" erthLconecalls7imene75L1651" cla34d9cnt863434"srefaa1="s class="s74SC34"sr>344q=f8_ef">ockfd_lookup_breakass345_cnt863434etsock4>;
rerdWe expe=fp34ets>3450" 21  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1345ref>2211ssreNULsocket.c#L1="s3452cnt863434684f8imene8551" i70734684>34522ref  21
4ut4ut4ut4ut345Cf>2m8len}
21 ct>2INVAt3454cnt863434f8_inst8>4ut345f=*/, gsref">ockfd_loopshLcoc8  22a, 4ut345Cf>2mef">ockfd_lookup_breakass3456cnt863434=f8_inst8>4ut345Cf>2m  22" c7/81/a>}3XPORT_SYMBOL21ifc=f8_inst8>3XPORT_SYMBOL1
The original LXR software by the221LXR communityfc86ththis experimental version by 21lxr@lasux.nofc86.
lxr.lasux.no kindly hostr8dby 21Redpill Laspro ASfc86thprovider of Lasux consulting1and operations services since 1995.