diff options
author | Torge Matthies | 2021-12-04 00:05:50 +0100 |
---|---|---|
committer | Torge Matthies | 2021-12-04 00:05:50 +0100 |
commit | bac0f6c3f7f5bbf306c2be3193a524af34ed39cc (patch) | |
tree | 7557b5adfdedf23e230d10c4387bb9cf873e63d0 | |
parent | d4cfbf696d4b5183dee8661f7ab51b55b481c2a3 (diff) | |
download | aur-bac0f6c3f7f5bbf306c2be3193a524af34ed39cc.tar.gz |
Upstream rebase and update.
Requires a hack to work as a dkms module now.
-rw-r--r-- | .SRCINFO | 26 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rw-r--r-- | dkms.conf | 1 | ||||
-rw-r--r-- | exported-symbols-hack.diff | 77 |
4 files changed, 105 insertions, 21 deletions
@@ -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 @@ -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); + } + |