summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Marc Lenoir2023-02-17 18:50:36 +0100
committerJean-Marc Lenoir2023-02-17 18:50:36 +0100
commit2992954cd5b43255214e7fd485e36b495c058d5e (patch)
tree2d62df20464f591ca10dbccf817db6264449bffa
parentcf5c8e51389c17d940c21766fe529474d855f0cb (diff)
downloadaur-2992954cd5b43255214e7fd485e36b495c058d5e.tar.gz
Sync with vmware-workstation 17.0.1
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD4
-rw-r--r--vmnet.patch133
-rw-r--r--vmware-workstation.install2
4 files changed, 66 insertions, 77 deletions
diff --git a/.SRCINFO b/.SRCINFO
index da26832bd1f2..64fecd404636 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = vmware-workstation11
pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC.
pkgver = 11.1.4
- pkgrel = 23
+ pkgrel = 24
url = https://www.vmware.com/products/workstation-for-linux.html
install = vmware-workstation.install
arch = x86_64
@@ -85,6 +85,6 @@ pkgbase = vmware-workstation11
sha256sums = 10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e
sha256sums = 273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac
sha256sums = 1e9f151b97b19661f4d4fb4276bc252087047bf557f87ceacb374811d612b436
- sha256sums = 1d2a3b86f4da3ed9645e159fff40e54306e138e6a53682df47c6226de59c81bd
+ sha256sums = 7304f6e134a7c98a78b168048b3657e7c82d10400b697bec0aab143e574a8b06
pkgname = vmware-workstation11
diff --git a/PKGBUILD b/PKGBUILD
index fbbedb649cf0..fa14a1b45a4e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -16,7 +16,7 @@ pkgname=vmware-workstation11
pkgver=11.1.4
_buildver=3848939
_pkgver=${pkgver}_${_buildver}
-pkgrel=23
+pkgrel=24
pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
arch=(x86_64)
url='https://www.vmware.com/products/workstation-for-linux.html'
@@ -122,7 +122,7 @@ sha256sums=(
'10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e'
'273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac'
'1e9f151b97b19661f4d4fb4276bc252087047bf557f87ceacb374811d612b436'
- '1d2a3b86f4da3ed9645e159fff40e54306e138e6a53682df47c6226de59c81bd'
+ '7304f6e134a7c98a78b168048b3657e7c82d10400b697bec0aab143e574a8b06'
)
options=(!strip emptydirs)
diff --git a/vmnet.patch b/vmnet.patch
index 6f7185888978..3687d29c7079 100644
--- a/vmnet.patch
+++ b/vmnet.patch
@@ -441,78 +441,67 @@
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
PF_NETLINK, _pri, &vmnet_proto, 1)
#elif defined(VMW_NETDEV_HAS_NET)
-From 78b77816d39a77b1643426ece1ebd48776d83c1b Mon Sep 17 00:00:00 2001
-From: Michal Kubecek <mkubecek@suse.cz>
-Date: Fri, 7 Oct 2022 12:56:44 +0200
-Subject: [PATCH] vmnet: work around field-spanning write warning
-
-The vmnet code uses struct VNet_EventHeader for an event header which is
-followed by variable amount of payload data but does use a flexible array
-member like most similar structures. When building with FORTIFY_SOURCE
-against kernel 6.1-rc1, this results in runtime warnings like
-
- memcpy: detected field-spanning write (size 28) of single field "&t->event"
-
-in VNetEvent_Send() and VNetUserListenerEventHandler(). Create a helper for
-copying full event structure and for implement it using two separate copy
-statements, one for fixed header and one for the variable payload. Another
-approach would be the use of unsafe_memcpy() but this code does not seem to
-be performance critical so let us split the memcpy() instead.
----
- vmnet-only/vnet.h | 8 ++++++++
- vmnet-only/vnetEvent.c | 2 +-
- vmnet-only/vnetUserListener.c | 2 +-
- 3 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/vmnet-only/vnet.h b/vmnet-only/vnet.h
-index d6691d5c..d5bb5572 100644
---- a/vmnet-only/vnet.h
-+++ b/vmnet-only/vnet.h
-@@ -258,6 +258,7 @@ typedef struct VNet_EventHeader {
- uint32 eventId;
- uint32 classSet;
- uint32 type;
-+ char payload[];
- } VNet_EventHeader;
- #pragma pack(pop)
-
-@@ -275,6 +276,13 @@ typedef struct VNet_LinkStateEvent {
- } VNet_LinkStateEvent;
- #pragma pack(pop)
-
-+static inline void VNet_Event_copy(VNet_EventHeader *dst,
-+ const VNet_EventHeader *src)
-+{
-+ *dst = *src;
-+ memcpy(dst->payload, src->payload, src->size - sizeof(*src));
-+}
-+
- /*
- *----------------------------------------------------------------------------
- */
-diff --git a/vmnet-only/vnetEvent.c b/vmnet-only/vnetEvent.c
-index 3fda7f5a..062398e0 100644
---- a/vmnet-only/vnetEvent.c
-+++ b/vmnet-only/vnetEvent.c
-@@ -402,7 +402,7 @@ VNetEvent_Send(VNetEvent_Sender *s, // IN: a sender
- p->nextEvent = s->firstEvent;
- s->firstEvent = p;
+--- a/vmnet/vnetEvent.c
++++ b/vmnet/vnetEvent.c
+@@ -60,10 +60,12 @@
+
+ struct VNetEvent_EventNode {
+ VNetEvent_EventNode *nextEvent;
+- VNet_EventHeader event;
++ union {
++ VNet_EventHeader header;
++ VNet_LinkStateEvent lse;
++ } event;
+ };
+
+-#define EVENT_NODE_HEADER_SIZE offsetof(struct VNetEvent_EventNode, event)
+
+ struct VNetEvent_Mechanism {
+ VNetKernel_SpinLock lock; /* mechanism lock */
+@@ -369,6 +371,10 @@
+ return VNetKernel_EINVAL;
}
-- memcpy(&p->event, e, e->size);
-+ VNet_Event_copy(&p->event, e);
-
- /* send event */
- classSet = e->classSet;
-diff --git a/vmnet-only/vnetUserListener.c b/vmnet-only/vnetUserListener.c
-index 114f3907..e9f51755 100644
---- a/vmnet-only/vnetUserListener.c
-+++ b/vmnet-only/vnetUserListener.c
-@@ -226,7 +226,7 @@ VNetUserListenerEventHandler(void *context, // IN: the user listener
- return;
+
++ if (e->size > sizeof(p->event)) {
++ return VNetKernel_EINVAL;
++ }
++
+ /* lock */
+ VNetKernel_SpinLockAcquire(&m->lock);
+ m->handlerTask = VNetKernel_ThreadCurrent();
+@@ -378,22 +384,15 @@
+ while (TRUE) {
+ p = *q;
+ if (p == NULL ||
+- (p->event.eventId == e->eventId && p->event.type == e->type)) {
++ (p->event.header.eventId == e->eventId && p->event.header.type == e->type)) {
+ break;
+ }
+ q = &p->nextEvent;
}
- t->nextEvent = NULL;
-- memcpy(&t->event, e, e->size);
-+ VNet_Event_copy(&t->event, e);
- /* append event to event list */
- userListener = (VNetUserListener*)context;
+- /* remove previously sent event */
+- if (p != NULL && p->event.size != e->size) {
+- *q = p->nextEvent;
+- VNetKernel_MemoryFree(p);
+- p = NULL;
+- }
+-
+ /* insert new event into event list*/
+ if (p == NULL) {
+- p = VNetKernel_MemoryAllocate(EVENT_NODE_HEADER_SIZE + e->size);
++ p = VNetKernel_MemoryAllocate(sizeof(*p));
+ if (p == NULL) {
+ m->handlerTask = NULL;
+ VNetKernel_SpinLockRelease(&m->lock);
+@@ -485,8 +484,8 @@
+ while (s != NULL) {
+ e = s->firstEvent;
+ while (e != NULL) {
+- if ((e->event.classSet & classMask) != 0) {
+- h(data, &e->event);
++ if ((e->event.header.classSet & classMask) != 0) {
++ h(data, &e->event.header);
+ }
+ e = e->nextEvent;
+ }
diff --git a/vmware-workstation.install b/vmware-workstation.install
index e7d170c5b581..209995a25743 100644
--- a/vmware-workstation.install
+++ b/vmware-workstation.install
@@ -24,7 +24,7 @@ EOF
post_remove() {
cat << EOF
-==> To remove VMware settings, delete /etc/vmware and /etc/vmware-installer directories.
+==> To completely clean VMware installation, you may have to manually delete /etc/vmware, /etc/vmware-installer and /usr/lib/vmware-installer directories if they still exist.
EOF
}