diff options
author | Jean-Marc Lenoir | 2017-09-30 09:24:50 +0200 |
---|---|---|
committer | Jean-Marc Lenoir | 2017-09-30 09:24:50 +0200 |
commit | e81425a7f8d36400df2e3b40ac9e791de35d2cf0 (patch) | |
tree | 6d1b6ac5ef2e4d997899bffe9893473f90fd20e6 /vmnet.patch | |
parent | 2965e8782be11ce0049f32fafa96b2d60c0282c8 (diff) | |
download | aur-e81425a7f8d36400df2e3b40ac9e791de35d2cf0.tar.gz |
Update to 14.0.0
Diffstat (limited to 'vmnet.patch')
-rw-r--r-- | vmnet.patch | 483 |
1 files changed, 4 insertions, 479 deletions
diff --git a/vmnet.patch b/vmnet.patch index 112dbfe1495b..867a75f361e2 100644 --- a/vmnet.patch +++ b/vmnet.patch @@ -24,24 +24,9 @@ index 2d8e6f6..a14166b 100644 -EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) +EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE) - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, ) - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, ) - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, ) -diff --git a/vmnet/bridge.c b/vmnet/bridge.c ---- a/vmnet/bridge.c -+++ b/vmnet/bridge.c -@@ -636,7 +636,11 @@ - unsigned long flags; - int i; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) - atomic_inc(&clone->users); -+#else -+ clone = skb_get(clone); -+#endif + obj-m += $(DRIVER).o - clone->dev = dev; - clone->protocol = eth_type_trans(clone, dev); diff --git a/vmnet/driver.c b/vmnet/driver.c index 7e7ad99..5f508f6 100644 --- a/vmnet/driver.c @@ -102,463 +87,6 @@ index 7e7ad99..5f508f6 100644 crc = 0xffffffff; /* init CRC for each address */ for (byte = 0; byte < ETH_ALEN; byte++) { /* for each address byte */ -diff --git a/vmnet/userif.c b/vmnet/userif.c -index 94146f6..5298406 100644 ---- a/vmnet/userif.c -+++ b/vmnet/userif.c -@@ -116,14 +116,18 @@ - int retval; - - down_read(¤t->mm->mmap_sem); --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) -- retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL); --#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) -- retval = get_user_pages(addr, 1, 1, 0, &page, NULL); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) -+ retval = get_user_pages(addr, - #else - retval = get_user_pages(current, current->mm, addr, -- 1, 1, 0, &page, NULL); - #endif -+ 1, -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -+ 1, 0, -+#else -+ FOLL_WRITE, -+#endif -+ &page, NULL); - up_read(¤t->mm->mmap_sem); - - if (retval != 1) { -@@ -187,13 +191,13 @@ - * - * Sets up notification by filling in pollPtr, actPtr, and recvClusterCount - * fields. -- * -- * Results: -+ * -+ * Results: - * 0 on success - * < 0 on failure: the actual value determines the type of failure - * - * Side effects: -- * Fields pollPtr, actPtr, recvClusterCount, pollPage, actPage, and -+ * Fields pollPtr, actPtr, recvClusterCount, pollPage, actPage, and - * recvClusterPage are filled in VNetUserIf structure. - * - *----------------------------------------------------------------------------- -@@ -283,8 +287,8 @@ - * VNetUserIfUnsetupNotify -- - * - * Destroys permanent mapping for notify structure provided by user. -- * -- * Results: -+ * -+ * Results: - * None. - * - * Side effects: -@@ -338,7 +342,7 @@ - * - * Free the user interface port. - * -- * Results: -+ * Results: - * None. - * - * Side effects: -@@ -360,7 +364,7 @@ - } - dev_kfree_skb(skb); - } -- -+ - if (userIf->pollPtr) { - VNetUserIfUnsetupNotify(userIf); - } -@@ -384,7 +388,7 @@ - * - * This jack is receiving a packet. Take appropriate action. - * -- * Results: -+ * Results: - * None. - * - * Side effects: -@@ -400,12 +404,12 @@ - VNetUserIF *userIf = (VNetUserIF*)this->private; - uint8 *dest = SKB_2_DESTMAC(skb); - unsigned long flags; -- -+ - if (!UP_AND_RUNNING(userIf->port.flags)) { - userIf->stats.droppedDown++; - goto drop_packet; - } -- -+ - if (!VNetPacketMatch(dest, - userIf->port.paddr, - (const uint8 *)userIf->port.exactFilter, -@@ -415,12 +419,12 @@ - userIf->stats.droppedMismatch++; - goto drop_packet; - } -- -+ - if (skb_queue_len(&userIf->packetQueue) >= vnet_max_qlen) { - userIf->stats.droppedOverflow++; - goto drop_packet; - } -- -+ - if (skb->len > ETHER_MAX_QUEUED_PACKET) { - userIf->stats.droppedLargePacket++; - goto drop_packet; -@@ -444,7 +448,7 @@ - - wake_up(&userIf->waitQueue); - return; -- -+ - drop_packet: - dev_kfree_skb(skb); - } -@@ -457,7 +461,7 @@ - * - * Callback for read operation on this userif entry in vnets proc fs. - * -- * Results: -+ * Results: - * Length of read operation. - * - * Side effects: -@@ -476,21 +480,21 @@ - // read - void *data) // IN: client data - not used - { -- VNetUserIF *userIf = (VNetUserIF*)data; -+ VNetUserIF *userIf = (VNetUserIF*)data; - int len = 0; -- -+ - if (!userIf) { - return len; - } -- -+ - len += VNetPrintPort(&userIf->port, page+len); -- -+ - len += sprintf(page+len, "read %u written %u queued %u ", - userIf->stats.read, - userIf->stats.written, - userIf->stats.queued); -- -- len += sprintf(page+len, -+ -+ len += sprintf(page+len, - "dropped.down %u dropped.mismatch %u " - "dropped.overflow %u dropped.largePacket %u", - userIf->stats.droppedDown, -@@ -499,7 +503,7 @@ - userIf->stats.droppedLargePacket); - - len += sprintf(page+len, "\n"); -- -+ - *start = 0; - *eof = 1; - return len; -@@ -513,7 +517,7 @@ - * - * Copy part of datagram to userspace. - * -- * Results: -+ * Results: - * zero on success, - * -EFAULT if buffer is an invalid area - * -@@ -550,12 +554,12 @@ - * - * Copy part of datagram to userspace doing checksum at same time. - * -- * Do not mark this function INLINE, it is recursive! With all gcc's -+ * Do not mark this function INLINE, it is recursive! With all gcc's - * released up to now (<= gcc-3.3.1) inlining this function just - * consumes 120 more bytes of code and goes completely mad on - * register allocation, storing almost everything in the memory. - * -- * Results: -+ * Results: - * folded checksum (non-negative value) on success, - * -EINVAL if offset is too big, - * -EFAULT if buffer is an invalid area -@@ -577,7 +581,7 @@ - char *curr = buf; - const skb_frag_t *frag; - -- /* -+ /* - * Something bad happened. We skip only up to skb->nh.raw, and skb->nh.raw - * must be in the header, otherwise we are in the big troubles. - */ -@@ -634,7 +638,7 @@ - * Copy complete datagram to the user space. Fill correct checksum - * into the copied datagram if nobody did it yet. - * -- * Results: -+ * Results: - * On success byte count, on failure -EFAULT. - * - * Side effects: -@@ -663,7 +667,7 @@ - size_t skl; - int csum; - u_int16_t csum16; -- -+ - skl = compat_skb_csum_start(skb); - if (VNetCopyDatagram(skb, buf, skl)) { - return -EFAULT; -@@ -694,7 +698,7 @@ - * The virtual network's read file operation. Reads the next pending - * packet for this network connection. - * -- * Results: -+ * Results: - * On success the len of the packet received, - * else if no packet waiting and nonblocking 0, - * else -errno. -@@ -705,7 +709,7 @@ - *---------------------------------------------------------------------- - */ - --static int -+static int - VNetUserIfRead(VNetPort *port, // IN - struct file *filp, // IN - char *buf, // OUT -@@ -773,7 +777,7 @@ - * The virtual network's write file operation. Send the raw packet - * to the network. - * -- * Results: -+ * Results: - * On success the count of bytes written else errno. - * - * Side effects: -@@ -782,7 +786,7 @@ - *---------------------------------------------------------------------- - */ - --static int -+static int - VNetUserIfWrite(VNetPort *port, // IN - struct file *filp, // IN - const char *buf, // IN -@@ -794,8 +798,8 @@ - /* - * Check size - */ -- -- if (count < sizeof (struct ethhdr) || -+ -+ if (count < sizeof (struct ethhdr) || - count > ETHER_MAX_QUEUED_PACKET) { - return -EINVAL; - } -@@ -812,25 +816,25 @@ - /* - * Allocate an sk_buff. - */ -- -+ - skb = dev_alloc_skb(count + 7); - if (skb == NULL) { - // XXX obey O_NONBLOCK? - return -ENOBUFS; - } -- -+ - skb_reserve(skb, 2); -- -+ - /* - * Copy the data and send it. - */ -- -+ - userIf->stats.written++; - if (copy_from_user(skb_put(skb, count), buf, count)) { - dev_kfree_skb(skb); - return -EFAULT; - } -- -+ - VNetSend(&userIf->port.jack, skb); - - return count; -@@ -844,7 +848,7 @@ - * - * XXX - * -- * Results: -+ * Results: - * 0 on success - * -errno on failure - * -@@ -867,8 +871,8 @@ - return -EINVAL; - case SIOCSETNOTIFY2: - #ifdef VMX86_SERVER -- /* -- * This ioctl always return failure on ESX since we cannot map pages into -+ /* -+ * This ioctl always return failure on ESX since we cannot map pages into - * the console os that are from the VMKernel address space which was the - * only case we used this. - */ -@@ -911,20 +915,20 @@ - break; - - case SIOCSIFFLAGS: -- /* -- * Drain queue when interface is no longer active. We drain the queue to -+ /* -+ * Drain queue when interface is no longer active. We drain the queue to - * avoid having old packets delivered to the guest when reneabled. - */ -- -+ - if (!UP_AND_RUNNING(userIf->port.flags)) { - struct sk_buff *skb; - unsigned long flags; - struct sk_buff_head *q = &userIf->packetQueue; -- -+ - while ((skb = skb_dequeue(q)) != NULL) { - dev_kfree_skb(skb); - } -- -+ - spin_lock_irqsave(&q->lock, flags); - if (userIf->pollPtr) { - if (skb_queue_empty(q)) { -@@ -941,11 +945,11 @@ - case SIOCINJECTLINKSTATE: - { - uint8 linkUpFromUser; -- if (copy_from_user(&linkUpFromUser, (void *)ioarg, -+ if (copy_from_user(&linkUpFromUser, (void *)ioarg, - sizeof linkUpFromUser)) { - return -EFAULT; - } -- -+ - if (linkUpFromUser != 0 && linkUpFromUser != 1) { - return -EINVAL; - } -@@ -957,7 +961,7 @@ - return -ENOIOCTLCMD; - break; - } -- -+ - return 0; - } - -@@ -969,7 +973,7 @@ - * - * The virtual network's file poll operation. - * -- * Results: -+ * Results: - * Return POLLIN if success, else sleep and return 0. - * FIXME: Should not we always return POLLOUT? - * -@@ -985,7 +989,7 @@ - poll_table *wait) // IN - { - VNetUserIF *userIf = (VNetUserIF*)port->jack.private; -- -+ - poll_wait(filp, &userIf->waitQueue, wait); - if (!skb_queue_empty(&userIf->packetQueue)) { - return POLLIN; -@@ -1000,8 +1004,8 @@ - * VNetUserIfSetUplinkState -- - * - * Sends link state change event. -- * -- * Results: -+ * -+ * Results: - * 0 on success, errno on failure. - * - * Side effects: -@@ -1043,7 +1047,7 @@ - event.header.eventId = 0; - event.header.classSet = VNET_EVENT_CLASS_UPLINK; - event.header.type = VNET_EVENT_TYPE_LINK_STATE; -- /* -+ /* - * XXX kind of a hack, vmx will coalesce linkup/down if they come from the - * same adapter. - */ -@@ -1068,8 +1072,8 @@ - * - * Create a user level port to the wonderful world of virtual - * networking. -- * -- * Results: -+ * -+ * Results: - * Errno. Also returns an allocated port to connect to, - * NULL on error. - * -@@ -1085,7 +1089,7 @@ - VNetUserIF *userIf; - static unsigned id = 0; - int retval; -- -+ - userIf = kmalloc(sizeof *userIf, GFP_USER); - if (!userIf) { - return -ENOMEM; -@@ -1094,7 +1098,7 @@ - /* - * Initialize fields. - */ -- -+ - userIf->port.id = id++; - - userIf->port.jack.peer = NULL; -@@ -1139,7 +1143,7 @@ - /* - * Rest of fields. - */ -- -+ - userIf->port.flags = IFF_RUNNING; - - memset(userIf->port.paddr, 0, sizeof userIf->port.paddr); -@@ -1152,12 +1156,12 @@ - userIf->port.fileOpWrite = VNetUserIfWrite; - userIf->port.fileOpIoctl = VNetUserIfIoctl; - userIf->port.fileOpPoll = VNetUserIfPoll; -- -+ - skb_queue_head_init(&(userIf->packetQueue)); - init_waitqueue_head(&userIf->waitQueue); - - memset(&userIf->stats, 0, sizeof userIf->stats); -- -+ - *ret = &userIf->port; - return 0; - } diff --git a/vmnet/vm_device_version.h b/vmnet/vm_device_version.h index e2cb477..3dd7097 100644 --- a/vmnet/vm_device_version.h @@ -577,15 +105,12 @@ diff --git a/vmnet/vmnetInt.h b/vmnet/vmnetInt.h index 0ee52ec..4e3b923 100644 --- a/vmnet/vmnetInt.h +++ b/vmnet/vmnetInt.h -@@ -77,9 +77,9 @@ - - +@@ -48,7 +48,7 @@ extern struct proto vmnet_proto; --#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) || defined(sk_net_refcnt) # define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ - PF_NETLINK, _pri, &vmnet_proto, 1) + PF_NETLINK, _pri, &vmnet_proto, 0) - #elif defined(VMW_NETDEV_HAS_NET) + #else # define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \ PF_NETLINK, _pri, &vmnet_proto) |