summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorTorge Matthies2021-12-04 00:05:50 +0100
committerTorge Matthies2021-12-04 00:05:50 +0100
commitbac0f6c3f7f5bbf306c2be3193a524af34ed39cc (patch)
tree7557b5adfdedf23e230d10c4387bb9cf873e63d0
parentd4cfbf696d4b5183dee8661f7ab51b55b481c2a3 (diff)
downloadaur-bac0f6c3f7f5bbf306c2be3193a524af34ed39cc.tar.gz
Upstream rebase and update.
Requires a hack to work as a dkms module now.
-rw-r--r--.SRCINFO26
-rw-r--r--PKGBUILD22
-rw-r--r--dkms.conf1
-rw-r--r--exported-symbols-hack.diff77
4 files changed, 105 insertions, 21 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 12b016158aa4..455055dc7b37 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,42 +1,44 @@
pkgbase = winesync
pkgdesc = Wine synchronization primitive driver
- pkgver = 5.12
- pkgrel = 5
- url = https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync
+ pkgver = 5.15
+ pkgrel = 1
+ url = https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync3
arch = any
license = GPL2
makedepends = linux-headers
makedepends = dkms
options = !strip
- source = winesync.c-f12fad2ab9d6efc2a6accb165a23549130a74e5b::https://repo.or.cz/linux/zf.git/blob_plain/f12fad2ab9d6efc2a6accb165a23549130a74e5b:/drivers/misc/winesync.c
- source = winesync.h-f12fad2ab9d6efc2a6accb165a23549130a74e5b::https://repo.or.cz/linux/zf.git/blob_plain/f12fad2ab9d6efc2a6accb165a23549130a74e5b:/include/uapi/linux/winesync.h
+ source = winesync.c-ee18b220dde45003cd7ce7360fe3e633678b97df::https://repo.or.cz/linux/zf.git/blob_plain/ee18b220dde45003cd7ce7360fe3e633678b97df:/drivers/misc/winesync.c
+ source = winesync.h-ee18b220dde45003cd7ce7360fe3e633678b97df::https://repo.or.cz/linux/zf.git/blob_plain/ee18b220dde45003cd7ce7360fe3e633678b97df:/include/uapi/linux/winesync.h
source = 99-winesync.rules
source = Makefile
source = dkms.conf
- sha256sums = 3b2f13776dac114a9e59e1d878c1c7b156025c193b4b6fa5b5a5475f9a36e1a0
- sha256sums = b5f96f71a0c46dca3c543baf847cfccf14ecb60a6cb55924a7887625fe33331e
+ source = exported-symbols-hack.diff
+ sha256sums = 25b8100561939b85a775cd415db6f57ba452cc05a03dacfcc515469793520831
+ sha256sums = ad35e082b3e75080bde77a9c3c2f300efdec3cab64c0603eadbc301de9f33242
sha256sums = 9b22d9976a83785e6a1cfc4a3aa230a8c5e4e903730bbafc598ec86bfaa35c3e
sha256sums = 05735aa1fef1eda3c6dca8b7a0c2a7eebf1eba8af38f608b4b1c34d4acbad453
- sha256sums = dec74d835e8f96ace131b7a16441d99b49d2e0ea4bb292dd17c617c8f156d812
+ sha256sums = 4f5a34a3d9cbc91789c6b42f3aa7a73e52d94610d34c4733abcd285abf446769
+ sha256sums = 3806d2440ee0c32d6b0c3be3077dbd437a11ccf2426874db92771fbc3f5f8519
pkgname = winesync
pkgdesc = Wine synchronization primitive driver - out-of-tree module
arch = x86_64
depends = linux
- provides = WINESYNC-MODULE=5.12
+ provides = WINESYNC-MODULE=5.15
pkgname = winesync-dkms
pkgdesc = Wine synchronization primitive driver - out-of-tree module (dkms version)
depends = dkms
optdepends = linux-headers: build the module for Arch kernel
- provides = WINESYNC-MODULE=5.12
+ provides = WINESYNC-MODULE=5.15
pkgname = winesync-header
pkgdesc = Wine synchronization primitive driver - header file
- provides = winesync-header=5.12
+ provides = winesync-header=5.15
conflicts = winesync-header
pkgname = winesync-udev-rule
pkgdesc = Wine synchronization primitive driver - udev rule
- provides = winesync-udev-rule=5.12
+ provides = winesync-udev-rule=5.15
conflicts = winesync-udev-rule
diff --git a/PKGBUILD b/PKGBUILD
index 855b7b6de469..bcce105edbc5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -8,11 +8,11 @@ _provide_udev_rule=true
pkgbase='winesync'
pkgname=()
-pkgver=5.12
-pkgrel=5
+pkgver=5.15
+pkgrel=1
pkgdesc="Wine synchronization primitive driver"
arch=('any')
-url='https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync'
+url='https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync3'
depends=()
makedepends=()
optdepends=()
@@ -29,17 +29,19 @@ _header_conflicts=("$pkgbase-header")
_udev_rule_conflicts=("$pkgbase-udev-rule")
license=('GPL2')
options=('!strip')
-_commit=f12fad2ab9d6efc2a6accb165a23549130a74e5b
+_commit=ee18b220dde45003cd7ce7360fe3e633678b97df
source=("winesync.c-$_commit::https://repo.or.cz/linux/zf.git/blob_plain/$_commit:/drivers/misc/winesync.c"
"winesync.h-$_commit::https://repo.or.cz/linux/zf.git/blob_plain/$_commit:/include/uapi/linux/winesync.h"
'99-winesync.rules'
'Makefile'
- 'dkms.conf')
-sha256sums=('3b2f13776dac114a9e59e1d878c1c7b156025c193b4b6fa5b5a5475f9a36e1a0'
- 'b5f96f71a0c46dca3c543baf847cfccf14ecb60a6cb55924a7887625fe33331e'
+ 'dkms.conf'
+ 'exported-symbols-hack.diff')
+sha256sums=('25b8100561939b85a775cd415db6f57ba452cc05a03dacfcc515469793520831'
+ 'ad35e082b3e75080bde77a9c3c2f300efdec3cab64c0603eadbc301de9f33242'
'9b22d9976a83785e6a1cfc4a3aa230a8c5e4e903730bbafc598ec86bfaa35c3e'
'05735aa1fef1eda3c6dca8b7a0c2a7eebf1eba8af38f608b4b1c34d4acbad453'
- 'dec74d835e8f96ace131b7a16441d99b49d2e0ea4bb292dd17c617c8f156d812')
+ '4f5a34a3d9cbc91789c6b42f3aa7a73e52d94610d34c4733abcd285abf446769'
+ '3806d2440ee0c32d6b0c3be3077dbd437a11ccf2426874db92771fbc3f5f8519')
if [ "${PRINTSRCINFO:-0}" -eq 1 ]; then
_provide_nondkms=true
@@ -64,7 +66,7 @@ fi
if [ "$_provide_nondkms" = true ] || [ "$_provide_dkms" = true ]; then
prepare() {
- _supported_kernvers=('5.11' '5.12' '5.13' '5.14' '5.15')
+ _supported_kernvers=('5.15')
_regex=("${_supported_kernvers[@]//./\\\\.}")
_regex="^($(IFS='|'; printf '%s' "${_regex[*]}"))(\\.|\$)"
sed -i -e "s/@PACKAGE_VERSION@/$pkgver/g" -e "s/@KERNVER_REGEX@/$_regex/g" "$srcdir/dkms.conf"
@@ -78,6 +80,7 @@ build() {
install -Dm644 "$srcdir/winesync.h-$_commit" "$srcdir/$pkgbase-$pkgver/include/uapi/linux/winesync.h"
install -Dm644 "$srcdir/winesync.c-$_commit" "$srcdir/$pkgbase-$pkgver/src/drivers/misc/winesync.c"
install -Dm644 "$srcdir/dkms.conf" "$srcdir/$pkgbase-$pkgver/dkms.conf"
+ install -Dm644 "$srcdir/exported-symbols-hack.diff" "$srcdir/$pkgbase-$pkgver/patches/exported-symbols-hack.diff"
mkdir "$srcdir/build"
fakeroot dkms build --sourcetree "$srcdir" --dkmstree "$srcdir/build" -m "$pkgbase/$pkgver" -k "$_kernver"
}
@@ -101,6 +104,7 @@ package_winesync-dkms() {
install -Dm644 "$srcdir/winesync.h-$_commit" "$pkgdir/usr/src/$pkgbase-$pkgver/include/uapi/linux/winesync.h"
install -Dm644 "$srcdir/winesync.c-$_commit" "$pkgdir/usr/src/$pkgbase-$pkgver/src/drivers/misc/winesync.c"
install -Dm644 "$srcdir/dkms.conf" "$pkgdir/usr/src/$pkgbase-$pkgver/dkms.conf"
+ install -Dm644 "$srcdir/exported-symbols-hack.diff" "$pkgdir/usr/src/$pkgbase-$pkgver/patches/exported-symbols-hack.diff"
}
fi
if [ "$_provide_header" = true ]; then
diff --git a/dkms.conf b/dkms.conf
index 34afec3b3b3e..bb775f68222f 100644
--- a/dkms.conf
+++ b/dkms.conf
@@ -5,3 +5,4 @@ BUILT_MODULE_LOCATION[0]="src/drivers/misc"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"
BUILD_EXCLUSIVE_KERNEL="@KERNVER_REGEX@"
+PATCH[0]="exported-symbols-hack.diff"
diff --git a/exported-symbols-hack.diff b/exported-symbols-hack.diff
new file mode 100644
index 000000000000..1a29d9ce146e
--- /dev/null
+++ b/exported-symbols-hack.diff
@@ -0,0 +1,77 @@
+diff --git a/Makefile b/Makefile
+index b11347c..0075083 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,5 @@
+ ifneq (${KERNELRELEASE},)
+-ccflags-y := -I$(src)/include -DWINESYNC_MINOR=243
++ccflags-y := -include $(src)/defines.h -I$(src)/include -DWINESYNC_MINOR=243
+ obj-m += src/drivers/misc/winesync.o
+ else
+ KDIR ?= /lib/modules/`uname -r`/build
+diff --git a/defines.h b/defines.h
+new file mode 100644
+index 0000000..bbf571d
+--- /dev/null
++++ b/defines.h
+@@ -0,0 +1,3 @@
++#define __set_current_blocked(x) (*p__set_current_blocked)(x)
++#define set_user_sigmask(x, y) (*pset_user_sigmask)(x, y)
++#define set_compat_user_sigmask(x, y) (*pset_compat_user_sigmask)(x, y)
+diff --git a/src/drivers/misc/winesync.c b/src/drivers/misc/winesync.c
+index e9db3b1..db49329 100644
+--- a/src/drivers/misc/winesync.c
++++ b/src/drivers/misc/winesync.c
+@@ -11,11 +11,26 @@
+ #include <linux/module.h>
+ #include <linux/sched/signal.h>
+ #include <linux/slab.h>
++#include <linux/version.h>
+ #include <linux/xarray.h>
+ #include <uapi/linux/winesync.h>
+
+ #define WINESYNC_NAME "winesync"
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)
++#ifndef CONFIG_KPROBES
++#error "Kprobes must be enabled for kernels >= 5.7!"
++#endif
++#include <linux/kprobes.h>
++#else
++#include <linux/kallsyms.h>
++#endif
++
++void (*p__set_current_blocked)(const sigset_t *newset);
++int (*pset_user_sigmask)(const sigset_t __user *umask, size_t sigsetsize);
++int (*pset_compat_user_sigmask)(const compat_sigset_t __user *umask,
++ size_t sigsetsize);
++
+ enum winesync_type {
+ WINESYNC_TYPE_SEM,
+ WINESYNC_TYPE_MUTEX,
+@@ -1003,6 +1018,25 @@ static struct miscdevice winesync_misc = {
+
+ static int __init winesync_init(void)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)
++ struct kprobe kp = {0};
++ int err;
++ unsigned long (*kallsyms_lookup_name)(const char *name);
++ kp.symbol_name = "kallsyms_lookup_name";
++ err = register_kprobe(&kp);
++ if (err) return err;
++ kallsyms_lookup_name = (void*)kp.addr;
++ unregister_kprobe(&kp);
++ if (!kallsyms_lookup_name) return -EINVAL;
++#endif
++
++ p__set_current_blocked = (void*)kallsyms_lookup_name("__set_current_blocked");
++ if (!p__set_current_blocked) return -EINVAL;
++ pset_user_sigmask = (void*)kallsyms_lookup_name("set_user_sigmask");
++ if (!pset_user_sigmask) return -EINVAL;
++ pset_compat_user_sigmask = (void*)kallsyms_lookup_name("set_compat_user_sigmask");
++ if (!pset_compat_user_sigmask) return -EINVAL;
++
+ return misc_register(&winesync_misc);
+ }
+