release 6.12.5
This commit is contained in:
parent
a78998e6a3
commit
efeeb92dda
7
debian/changelog
vendored
7
debian/changelog
vendored
@ -1,3 +1,10 @@
|
|||||||
|
linux (6.12.5-1) sid; urgency=medium
|
||||||
|
|
||||||
|
* New upstream stable update:
|
||||||
|
https://www.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.5
|
||||||
|
|
||||||
|
-- Konstantin Demin <rockdrilla@gmail.com> Mon, 16 Dec 2024 06:43:43 +0300
|
||||||
|
|
||||||
linux (6.12.4-1) sid; urgency=medium
|
linux (6.12.4-1) sid; urgency=medium
|
||||||
|
|
||||||
* Sync with Debian.
|
* Sync with Debian.
|
||||||
|
2
debian/config/config
vendored
2
debian/config/config
vendored
@ -2386,7 +2386,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
|||||||
# CONFIG_TEST_LOCKUP is not set
|
# CONFIG_TEST_LOCKUP is not set
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
CONFIG_SCHEDSTATS=y
|
CONFIG_SCHEDSTATS=y
|
||||||
CONFIG_DEBUG_TIMEKEEPING=y
|
|
||||||
# CONFIG_PROVE_LOCKING is not set
|
# CONFIG_PROVE_LOCKING is not set
|
||||||
# CONFIG_LOCK_STAT is not set
|
# CONFIG_LOCK_STAT is not set
|
||||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
@ -3478,7 +3477,6 @@ CONFIG_CDROM=m
|
|||||||
CONFIG_CGROUP_WRITEBACK=y
|
CONFIG_CGROUP_WRITEBACK=y
|
||||||
CONFIG_CLKBLD_I8253=y
|
CONFIG_CLKBLD_I8253=y
|
||||||
CONFIG_CLKEVT_I8253=y
|
CONFIG_CLKEVT_I8253=y
|
||||||
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
|
|
||||||
CONFIG_CLOCKSOURCE_WATCHDOG=y
|
CONFIG_CLOCKSOURCE_WATCHDOG=y
|
||||||
CONFIG_CLZ_TAB=y
|
CONFIG_CLZ_TAB=y
|
||||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=0
|
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=0
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||||||
|
|
||||||
--- a/fs/btrfs/super.c
|
--- a/fs/btrfs/super.c
|
||||||
+++ b/fs/btrfs/super.c
|
+++ b/fs/btrfs/super.c
|
||||||
@@ -2631,7 +2631,7 @@ module_exit(exit_btrfs_fs)
|
@@ -2618,7 +2618,7 @@ module_exit(exit_btrfs_fs)
|
||||||
|
|
||||||
MODULE_DESCRIPTION("B-Tree File System (BTRFS)");
|
MODULE_DESCRIPTION("B-Tree File System (BTRFS)");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@ -21,7 +21,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||||||
|
|
||||||
--- a/net/ieee802154/socket.c
|
--- a/net/ieee802154/socket.c
|
||||||
+++ b/net/ieee802154/socket.c
|
+++ b/net/ieee802154/socket.c
|
||||||
@@ -1138,4 +1138,4 @@ module_exit(af_ieee802154_remove);
|
@@ -1140,4 +1140,4 @@ module_exit(af_ieee802154_remove);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DESCRIPTION("IEEE 802.15.4 socket interface");
|
MODULE_DESCRIPTION("IEEE 802.15.4 socket interface");
|
||||||
|
@ -12,7 +12,7 @@ actually used.
|
|||||||
---
|
---
|
||||||
--- a/fs/notify/fanotify/fanotify_user.c
|
--- a/fs/notify/fanotify/fanotify_user.c
|
||||||
+++ b/fs/notify/fanotify/fanotify_user.c
|
+++ b/fs/notify/fanotify/fanotify_user.c
|
||||||
@@ -1752,6 +1752,14 @@ static int do_fanotify_mark(int fanotify
|
@@ -1763,6 +1763,14 @@ static int do_fanotify_mark(int fanotify
|
||||||
umask = FANOTIFY_EVENT_FLAGS;
|
umask = FANOTIFY_EVENT_FLAGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
debian/patches/debian/kernelvariables.patch
vendored
2
debian/patches/debian/kernelvariables.patch
vendored
@ -54,7 +54,7 @@ use of $(ARCH) needs to be moved after this.
|
|||||||
KCONFIG_CONFIG ?= .config
|
KCONFIG_CONFIG ?= .config
|
||||||
export KCONFIG_CONFIG
|
export KCONFIG_CONFIG
|
||||||
|
|
||||||
@@ -524,6 +494,35 @@ RUSTFLAGS_KERNEL =
|
@@ -525,6 +495,35 @@ RUSTFLAGS_KERNEL =
|
||||||
AFLAGS_KERNEL =
|
AFLAGS_KERNEL =
|
||||||
LDFLAGS_vmlinux =
|
LDFLAGS_vmlinux =
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ is non-empty.
|
|||||||
---
|
---
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1817,7 +1817,7 @@ PHONY += prepare
|
@@ -1818,7 +1818,7 @@ PHONY += prepare
|
||||||
# now expand this into a simple variable to reduce the cost of shell evaluations
|
# now expand this into a simple variable to reduce the cost of shell evaluations
|
||||||
prepare: CC_VERSION_TEXT := $(CC_VERSION_TEXT)
|
prepare: CC_VERSION_TEXT := $(CC_VERSION_TEXT)
|
||||||
prepare:
|
prepare:
|
||||||
|
@ -42,7 +42,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|||||||
Ignore sysrq setting - this boot parameter will
|
Ignore sysrq setting - this boot parameter will
|
||||||
--- a/arch/x86/Kconfig
|
--- a/arch/x86/Kconfig
|
||||||
+++ b/arch/x86/Kconfig
|
+++ b/arch/x86/Kconfig
|
||||||
@@ -3164,6 +3164,14 @@ config COMPAT_32
|
@@ -3163,6 +3163,14 @@ config COMPAT_32
|
||||||
select HAVE_UID16
|
select HAVE_UID16
|
||||||
select OLD_SIGSUSPEND3
|
select OLD_SIGSUSPEND3
|
||||||
|
|
||||||
|
2
debian/patches/krd/0003-local-ports.patch
vendored
2
debian/patches/krd/0003-local-ports.patch
vendored
@ -1,6 +1,6 @@
|
|||||||
--- a/net/ipv4/af_inet.c
|
--- a/net/ipv4/af_inet.c
|
||||||
+++ b/net/ipv4/af_inet.c
|
+++ b/net/ipv4/af_inet.c
|
||||||
@@ -1802,7 +1802,7 @@ static __net_init int inet_init_net(stru
|
@@ -1800,7 +1800,7 @@ static __net_init int inet_init_net(stru
|
||||||
/*
|
/*
|
||||||
* Set defaults for local port range
|
* Set defaults for local port range
|
||||||
*/
|
*/
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
From 06bc88f16094c6f38e0890992af4a32415716c5d Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
|
|
||||||
Date: Thu, 18 Jul 2024 21:19:39 +0200
|
|
||||||
Subject: Revert "misc: ntsync: mark driver as "broken" to prevent from
|
|
||||||
building"
|
|
||||||
|
|
||||||
This reverts commit f5b335dc025cfee90957efa90dc72fada0d5abb4.
|
|
||||||
---
|
|
||||||
drivers/misc/Kconfig | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/misc/Kconfig
|
|
||||||
+++ b/drivers/misc/Kconfig
|
|
||||||
@@ -517,7 +517,6 @@ config OPEN_DICE
|
|
||||||
|
|
||||||
config NTSYNC
|
|
||||||
tristate "NT synchronization primitive emulation"
|
|
||||||
- depends on BROKEN
|
|
||||||
help
|
|
||||||
This module provides kernel support for emulation of Windows NT
|
|
||||||
synchronization primitives. It is not a hardware driver.
|
|
55
debian/patches/misc-ntsync7/0001-ntsync-Return-the-fd-from-NTSYNC_IOC_CREATE_SEM.patch
vendored
Normal file
55
debian/patches/misc-ntsync7/0001-ntsync-Return-the-fd-from-NTSYNC_IOC_CREATE_SEM.patch
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From e50ffd43b88d64b8063a9fce59f1d03b56f6144c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
Date: Fri, 13 Dec 2024 13:34:42 -0600
|
||||||
|
Subject: ntsync: Return the fd from NTSYNC_IOC_CREATE_SEM.
|
||||||
|
|
||||||
|
Simplify the user API a bit by returning the fd as return value from the ioctl
|
||||||
|
instead of through the argument pointer.
|
||||||
|
|
||||||
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
---
|
||||||
|
drivers/misc/ntsync.c | 7 ++-----
|
||||||
|
include/uapi/linux/ntsync.h | 3 +--
|
||||||
|
2 files changed, 3 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/misc/ntsync.c
|
||||||
|
+++ b/drivers/misc/ntsync.c
|
||||||
|
@@ -165,7 +165,6 @@ static int ntsync_obj_get_fd(struct ntsy
|
||||||
|
|
||||||
|
static int ntsync_create_sem(struct ntsync_device *dev, void __user *argp)
|
||||||
|
{
|
||||||
|
- struct ntsync_sem_args __user *user_args = argp;
|
||||||
|
struct ntsync_sem_args args;
|
||||||
|
struct ntsync_obj *sem;
|
||||||
|
int fd;
|
||||||
|
@@ -182,12 +181,10 @@ static int ntsync_create_sem(struct ntsy
|
||||||
|
sem->u.sem.count = args.count;
|
||||||
|
sem->u.sem.max = args.max;
|
||||||
|
fd = ntsync_obj_get_fd(sem);
|
||||||
|
- if (fd < 0) {
|
||||||
|
+ if (fd < 0)
|
||||||
|
kfree(sem);
|
||||||
|
- return fd;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- return put_user(fd, &user_args->sem);
|
||||||
|
+ return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ntsync_char_open(struct inode *inode, struct file *file)
|
||||||
|
--- a/include/uapi/linux/ntsync.h
|
||||||
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
|
@@ -11,12 +11,11 @@
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct ntsync_sem_args {
|
||||||
|
- __u32 sem;
|
||||||
|
__u32 count;
|
||||||
|
__u32 max;
|
||||||
|
};
|
||||||
|
|
||||||
|
-#define NTSYNC_IOC_CREATE_SEM _IOWR('N', 0x80, struct ntsync_sem_args)
|
||||||
|
+#define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args)
|
||||||
|
|
||||||
|
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
||||||
|
|
64
debian/patches/misc-ntsync7/0002-ntsync-Rename-NTSYNC_IOC_SEM_POST-to-NTSYNC_IOC_SEM_.patch
vendored
Normal file
64
debian/patches/misc-ntsync7/0002-ntsync-Rename-NTSYNC_IOC_SEM_POST-to-NTSYNC_IOC_SEM_.patch
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
From 160e9bf7826da868ae4de261753a03cce2208ff6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
Date: Fri, 13 Dec 2024 13:34:43 -0600
|
||||||
|
Subject: ntsync: Rename NTSYNC_IOC_SEM_POST to NTSYNC_IOC_SEM_RELEASE.
|
||||||
|
|
||||||
|
Use the more common "release" terminology, which is also the term used by NT,
|
||||||
|
instead of "post" (which is used by POSIX).
|
||||||
|
|
||||||
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
---
|
||||||
|
drivers/misc/ntsync.c | 10 +++++-----
|
||||||
|
include/uapi/linux/ntsync.h | 2 +-
|
||||||
|
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/misc/ntsync.c
|
||||||
|
+++ b/drivers/misc/ntsync.c
|
||||||
|
@@ -57,7 +57,7 @@ struct ntsync_device {
|
||||||
|
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||||
|
* invalid.
|
||||||
|
*/
|
||||||
|
-static int post_sem_state(struct ntsync_obj *sem, __u32 count)
|
||||||
|
+static int release_sem_state(struct ntsync_obj *sem, __u32 count)
|
||||||
|
{
|
||||||
|
__u32 sum;
|
||||||
|
|
||||||
|
@@ -71,7 +71,7 @@ static int post_sem_state(struct ntsync_
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp)
|
||||||
|
+static int ntsync_sem_release(struct ntsync_obj *sem, void __user *argp)
|
||||||
|
{
|
||||||
|
__u32 __user *user_args = argp;
|
||||||
|
__u32 prev_count;
|
||||||
|
@@ -87,7 +87,7 @@ static int ntsync_sem_post(struct ntsync
|
||||||
|
spin_lock(&sem->lock);
|
||||||
|
|
||||||
|
prev_count = sem->u.sem.count;
|
||||||
|
- ret = post_sem_state(sem, args);
|
||||||
|
+ ret = release_sem_state(sem, args);
|
||||||
|
|
||||||
|
spin_unlock(&sem->lock);
|
||||||
|
|
||||||
|
@@ -114,8 +114,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
|
void __user *argp = (void __user *)parm;
|
||||||
|
|
||||||
|
switch (cmd) {
|
||||||
|
- case NTSYNC_IOC_SEM_POST:
|
||||||
|
- return ntsync_sem_post(obj, argp);
|
||||||
|
+ case NTSYNC_IOC_SEM_RELEASE:
|
||||||
|
+ return ntsync_sem_release(obj, argp);
|
||||||
|
default:
|
||||||
|
return -ENOIOCTLCMD;
|
||||||
|
}
|
||||||
|
--- a/include/uapi/linux/ntsync.h
|
||||||
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
|
@@ -17,6 +17,6 @@ struct ntsync_sem_args {
|
||||||
|
|
||||||
|
#define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args)
|
||||||
|
|
||||||
|
-#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
||||||
|
+#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
|
|
||||||
|
#endif
|
@ -1,6 +1,6 @@
|
|||||||
From 60b01019526236e40466cf20bf1192074e5e1a7c Mon Sep 17 00:00:00 2001
|
From e855a17ec837cdee9047e6e23e47ed7b4312a265 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:27 -0500
|
Date: Fri, 13 Dec 2024 13:34:44 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_WAIT_ANY.
|
Subject: ntsync: Introduce NTSYNC_IOC_WAIT_ANY.
|
||||||
|
|
||||||
This corresponds to part of the functionality of the NT syscall
|
This corresponds to part of the functionality of the NT syscall
|
||||||
@ -38,9 +38,9 @@ in future patches (split out to ease review).
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 245 ++++++++++++++++++++++++++++++++++++
|
drivers/misc/ntsync.c | 247 +++++++++++++++++++++++++++++++++++-
|
||||||
include/uapi/linux/ntsync.h | 14 +++
|
include/uapi/linux/ntsync.h | 14 ++
|
||||||
2 files changed, 259 insertions(+)
|
2 files changed, 260 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@ -126,10 +126,12 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
/*
|
/*
|
||||||
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||||
* invalid.
|
* invalid.
|
||||||
@@ -88,6 +138,8 @@ static int ntsync_sem_post(struct ntsync
|
@@ -87,7 +137,9 @@ static int ntsync_sem_release(struct nts
|
||||||
|
spin_lock(&sem->lock);
|
||||||
|
|
||||||
prev_count = sem->u.sem.count;
|
prev_count = sem->u.sem.count;
|
||||||
ret = post_sem_state(sem, args);
|
- ret = release_sem_state(sem, args);
|
||||||
|
+ ret = post_sem_state(sem, args);
|
||||||
+ if (!ret)
|
+ if (!ret)
|
||||||
+ try_wake_any_sem(sem);
|
+ try_wake_any_sem(sem);
|
||||||
|
|
||||||
@ -143,8 +145,8 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
@@ -190,6 +243,196 @@ static int ntsync_create_sem(struct ntsy
|
@@ -187,6 +240,196 @@ static int ntsync_create_sem(struct ntsy
|
||||||
return put_user(fd, &user_args->sem);
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
+static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
||||||
@ -340,7 +342,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
static int ntsync_char_open(struct inode *inode, struct file *file)
|
static int ntsync_char_open(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
struct ntsync_device *dev;
|
struct ntsync_device *dev;
|
||||||
@@ -221,6 +464,8 @@ static long ntsync_char_ioctl(struct fil
|
@@ -218,6 +461,8 @@ static long ntsync_char_ioctl(struct fil
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case NTSYNC_IOC_CREATE_SEM:
|
case NTSYNC_IOC_CREATE_SEM:
|
||||||
return ntsync_create_sem(dev, argp);
|
return ntsync_create_sem(dev, argp);
|
||||||
@ -351,7 +353,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -16,7 +16,21 @@ struct ntsync_sem_args {
|
@@ -15,7 +15,21 @@ struct ntsync_sem_args {
|
||||||
__u32 max;
|
__u32 max;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -368,8 +370,8 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+#define NTSYNC_MAX_WAIT_COUNT 64
|
+#define NTSYNC_MAX_WAIT_COUNT 64
|
||||||
+
|
+
|
||||||
#define NTSYNC_IOC_CREATE_SEM _IOWR('N', 0x80, struct ntsync_sem_args)
|
#define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args)
|
||||||
+#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
+#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
From 73fc33606fcb7028ec1ee6027a361de4e85ab5d6 Mon Sep 17 00:00:00 2001
|
From 6c1dac87ff835a48a067fe75bd0a6965921dac78 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:28 -0500
|
Date: Fri, 13 Dec 2024 13:34:45 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_WAIT_ALL.
|
Subject: ntsync: Introduce NTSYNC_IOC_WAIT_ALL.
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
@ -27,9 +27,9 @@ The locking scheme used here was written by Peter Zijlstra.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 334 ++++++++++++++++++++++++++++++++++--
|
drivers/misc/ntsync.c | 336 ++++++++++++++++++++++++++++++++++--
|
||||||
include/uapi/linux/ntsync.h | 1 +
|
include/uapi/linux/ntsync.h | 1 +
|
||||||
2 files changed, 322 insertions(+), 13 deletions(-)
|
2 files changed, 323 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@ -280,7 +280,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
list_for_each_entry(entry, &sem->any_waiters, node) {
|
list_for_each_entry(entry, &sem->any_waiters, node) {
|
||||||
struct ntsync_q *q = entry->q;
|
struct ntsync_q *q = entry->q;
|
||||||
@@ -111,7 +315,7 @@ static int post_sem_state(struct ntsync_
|
@@ -111,7 +315,7 @@ static int release_sem_state(struct ntsy
|
||||||
{
|
{
|
||||||
__u32 sum;
|
__u32 sum;
|
||||||
|
|
||||||
@ -289,9 +289,9 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
if (check_add_overflow(sem->u.sem.count, count, &sum) ||
|
if (check_add_overflow(sem->u.sem.count, count, &sum) ||
|
||||||
sum > sem->u.sem.max)
|
sum > sem->u.sem.max)
|
||||||
@@ -123,9 +327,11 @@ static int post_sem_state(struct ntsync_
|
@@ -123,9 +327,11 @@ static int release_sem_state(struct ntsy
|
||||||
|
|
||||||
static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp)
|
static int ntsync_sem_release(struct ntsync_obj *sem, void __user *argp)
|
||||||
{
|
{
|
||||||
+ struct ntsync_device *dev = sem->dev;
|
+ struct ntsync_device *dev = sem->dev;
|
||||||
__u32 __user *user_args = argp;
|
__u32 __user *user_args = argp;
|
||||||
@ -301,7 +301,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (copy_from_user(&args, argp, sizeof(args)))
|
if (copy_from_user(&args, argp, sizeof(args)))
|
||||||
@@ -134,14 +340,17 @@ static int ntsync_sem_post(struct ntsync
|
@@ -134,14 +340,17 @@ static int ntsync_sem_release(struct nts
|
||||||
if (sem->type != NTSYNC_TYPE_SEM)
|
if (sem->type != NTSYNC_TYPE_SEM)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@ -309,8 +309,9 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ all = ntsync_lock_obj(dev, sem);
|
+ all = ntsync_lock_obj(dev, sem);
|
||||||
|
|
||||||
prev_count = sem->u.sem.count;
|
prev_count = sem->u.sem.count;
|
||||||
ret = post_sem_state(sem, args);
|
- ret = post_sem_state(sem, args);
|
||||||
- if (!ret)
|
- if (!ret)
|
||||||
|
+ ret = release_sem_state(sem, args);
|
||||||
+ if (!ret) {
|
+ if (!ret) {
|
||||||
+ if (all)
|
+ if (all)
|
||||||
+ try_wake_all_obj(dev, sem);
|
+ try_wake_all_obj(dev, sem);
|
||||||
@ -331,7 +332,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
@@ -304,7 +515,7 @@ static int ntsync_schedule(const struct
|
@@ -301,7 +512,7 @@ static int ntsync_schedule(const struct
|
||||||
* Allocate and initialize the ntsync_q structure, but do not queue us yet.
|
* Allocate and initialize the ntsync_q structure, but do not queue us yet.
|
||||||
*/
|
*/
|
||||||
static int setup_wait(struct ntsync_device *dev,
|
static int setup_wait(struct ntsync_device *dev,
|
||||||
@ -340,7 +341,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_q **ret_q)
|
struct ntsync_q **ret_q)
|
||||||
{
|
{
|
||||||
const __u32 count = args->count;
|
const __u32 count = args->count;
|
||||||
@@ -327,6 +538,7 @@ static int setup_wait(struct ntsync_devi
|
@@ -324,6 +535,7 @@ static int setup_wait(struct ntsync_devi
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
q->task = current;
|
q->task = current;
|
||||||
atomic_set(&q->signaled, -1);
|
atomic_set(&q->signaled, -1);
|
||||||
@ -348,7 +349,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
q->count = count;
|
q->count = count;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
@@ -336,6 +548,16 @@ static int setup_wait(struct ntsync_devi
|
@@ -333,6 +545,16 @@ static int setup_wait(struct ntsync_devi
|
||||||
if (!obj)
|
if (!obj)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@ -365,7 +366,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
entry->obj = obj;
|
entry->obj = obj;
|
||||||
entry->q = q;
|
entry->q = q;
|
||||||
entry->index = i;
|
entry->index = i;
|
||||||
@@ -365,13 +587,14 @@ static int ntsync_wait_any(struct ntsync
|
@@ -362,13 +584,14 @@ static int ntsync_wait_any(struct ntsync
|
||||||
struct ntsync_wait_args args;
|
struct ntsync_wait_args args;
|
||||||
struct ntsync_q *q;
|
struct ntsync_q *q;
|
||||||
int signaled;
|
int signaled;
|
||||||
@ -381,7 +382,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -381,9 +604,9 @@ static int ntsync_wait_any(struct ntsync
|
@@ -378,9 +601,9 @@ static int ntsync_wait_any(struct ntsync
|
||||||
struct ntsync_q_entry *entry = &q->entries[i];
|
struct ntsync_q_entry *entry = &q->entries[i];
|
||||||
struct ntsync_obj *obj = entry->obj;
|
struct ntsync_obj *obj = entry->obj;
|
||||||
|
|
||||||
@ -393,7 +394,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check if we are already signaled */
|
/* check if we are already signaled */
|
||||||
@@ -394,9 +617,9 @@ static int ntsync_wait_any(struct ntsync
|
@@ -391,9 +614,9 @@ static int ntsync_wait_any(struct ntsync
|
||||||
if (atomic_read(&q->signaled) != -1)
|
if (atomic_read(&q->signaled) != -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -405,7 +406,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* sleep */
|
/* sleep */
|
||||||
@@ -409,13 +632,94 @@ static int ntsync_wait_any(struct ntsync
|
@@ -406,13 +629,94 @@ static int ntsync_wait_any(struct ntsync
|
||||||
struct ntsync_q_entry *entry = &q->entries[i];
|
struct ntsync_q_entry *entry = &q->entries[i];
|
||||||
struct ntsync_obj *obj = entry->obj;
|
struct ntsync_obj *obj = entry->obj;
|
||||||
|
|
||||||
@ -502,7 +503,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
signaled = atomic_read(&q->signaled);
|
signaled = atomic_read(&q->signaled);
|
||||||
if (signaled != -1) {
|
if (signaled != -1) {
|
||||||
struct ntsync_wait_args __user *user_args = argp;
|
struct ntsync_wait_args __user *user_args = argp;
|
||||||
@@ -441,6 +745,8 @@ static int ntsync_char_open(struct inode
|
@@ -438,6 +742,8 @@ static int ntsync_char_open(struct inode
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -511,7 +512,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
file->private_data = dev;
|
file->private_data = dev;
|
||||||
dev->file = file;
|
dev->file = file;
|
||||||
return nonseekable_open(inode, file);
|
return nonseekable_open(inode, file);
|
||||||
@@ -464,6 +770,8 @@ static long ntsync_char_ioctl(struct fil
|
@@ -461,6 +767,8 @@ static long ntsync_char_ioctl(struct fil
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case NTSYNC_IOC_CREATE_SEM:
|
case NTSYNC_IOC_CREATE_SEM:
|
||||||
return ntsync_create_sem(dev, argp);
|
return ntsync_create_sem(dev, argp);
|
||||||
@ -522,11 +523,11 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
default:
|
default:
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -31,6 +31,7 @@ struct ntsync_wait_args {
|
@@ -30,6 +30,7 @@ struct ntsync_wait_args {
|
||||||
|
|
||||||
#define NTSYNC_IOC_CREATE_SEM _IOWR('N', 0x80, struct ntsync_sem_args)
|
#define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args)
|
||||||
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
||||||
+#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
+#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
From fdeceab49078a80987c665ed837ee4f1b8a942a8 Mon Sep 17 00:00:00 2001
|
From bcdeaefdc4b60e7845232c201427717df3a83277 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:29 -0500
|
Date: Fri, 13 Dec 2024 13:34:46 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_CREATE_MUTEX.
|
Subject: ntsync: Introduce NTSYNC_IOC_CREATE_MUTEX.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtCreateMutant().
|
This corresponds to the NT syscall NtCreateMutant().
|
||||||
@ -18,9 +18,9 @@ created.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 77 +++++++++++++++++++++++++++++++++++--
|
drivers/misc/ntsync.c | 74 +++++++++++++++++++++++++++++++++++--
|
||||||
include/uapi/linux/ntsync.h | 10 ++++-
|
include/uapi/linux/ntsync.h | 9 ++++-
|
||||||
2 files changed, 83 insertions(+), 4 deletions(-)
|
2 files changed, 79 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@ -121,13 +121,12 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
/*
|
/*
|
||||||
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||||
* invalid.
|
* invalid.
|
||||||
@@ -454,6 +492,33 @@ static int ntsync_create_sem(struct ntsy
|
@@ -451,6 +489,30 @@ static int ntsync_create_sem(struct ntsy
|
||||||
return put_user(fd, &user_args->sem);
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int ntsync_create_mutex(struct ntsync_device *dev, void __user *argp)
|
+static int ntsync_create_mutex(struct ntsync_device *dev, void __user *argp)
|
||||||
+{
|
+{
|
||||||
+ struct ntsync_mutex_args __user *user_args = argp;
|
|
||||||
+ struct ntsync_mutex_args args;
|
+ struct ntsync_mutex_args args;
|
||||||
+ struct ntsync_obj *mutex;
|
+ struct ntsync_obj *mutex;
|
||||||
+ int fd;
|
+ int fd;
|
||||||
@ -144,18 +143,16 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ mutex->u.mutex.count = args.count;
|
+ mutex->u.mutex.count = args.count;
|
||||||
+ mutex->u.mutex.owner = args.owner;
|
+ mutex->u.mutex.owner = args.owner;
|
||||||
+ fd = ntsync_obj_get_fd(mutex);
|
+ fd = ntsync_obj_get_fd(mutex);
|
||||||
+ if (fd < 0) {
|
+ if (fd < 0)
|
||||||
+ kfree(mutex);
|
+ kfree(mutex);
|
||||||
+ return fd;
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ return put_user(fd, &user_args->mutex);
|
+ return fd;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
||||||
{
|
{
|
||||||
struct file *file = fget(fd);
|
struct file *file = fget(fd);
|
||||||
@@ -523,7 +588,7 @@ static int setup_wait(struct ntsync_devi
|
@@ -520,7 +582,7 @@ static int setup_wait(struct ntsync_devi
|
||||||
struct ntsync_q *q;
|
struct ntsync_q *q;
|
||||||
__u32 i, j;
|
__u32 i, j;
|
||||||
|
|
||||||
@ -164,7 +161,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (args->count > NTSYNC_MAX_WAIT_COUNT)
|
if (args->count > NTSYNC_MAX_WAIT_COUNT)
|
||||||
@@ -537,6 +602,7 @@ static int setup_wait(struct ntsync_devi
|
@@ -534,6 +596,7 @@ static int setup_wait(struct ntsync_devi
|
||||||
if (!q)
|
if (!q)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
q->task = current;
|
q->task = current;
|
||||||
@ -172,7 +169,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
atomic_set(&q->signaled, -1);
|
atomic_set(&q->signaled, -1);
|
||||||
q->all = all;
|
q->all = all;
|
||||||
q->count = count;
|
q->count = count;
|
||||||
@@ -579,6 +645,9 @@ static void try_wake_any_obj(struct ntsy
|
@@ -576,6 +639,9 @@ static void try_wake_any_obj(struct ntsy
|
||||||
case NTSYNC_TYPE_SEM:
|
case NTSYNC_TYPE_SEM:
|
||||||
try_wake_any_sem(obj);
|
try_wake_any_sem(obj);
|
||||||
break;
|
break;
|
||||||
@ -182,7 +179,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -768,6 +837,8 @@ static long ntsync_char_ioctl(struct fil
|
@@ -765,6 +831,8 @@ static long ntsync_char_ioctl(struct fil
|
||||||
void __user *argp = (void __user *)parm;
|
void __user *argp = (void __user *)parm;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
@ -193,12 +190,11 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
case NTSYNC_IOC_WAIT_ALL:
|
case NTSYNC_IOC_WAIT_ALL:
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -16,6 +16,12 @@ struct ntsync_sem_args {
|
@@ -15,6 +15,11 @@ struct ntsync_sem_args {
|
||||||
__u32 max;
|
__u32 max;
|
||||||
};
|
};
|
||||||
|
|
||||||
+struct ntsync_mutex_args {
|
+struct ntsync_mutex_args {
|
||||||
+ __u32 mutex;
|
|
||||||
+ __u32 owner;
|
+ __u32 owner;
|
||||||
+ __u32 count;
|
+ __u32 count;
|
||||||
+};
|
+};
|
||||||
@ -206,7 +202,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
#define NTSYNC_WAIT_REALTIME 0x1
|
#define NTSYNC_WAIT_REALTIME 0x1
|
||||||
|
|
||||||
struct ntsync_wait_args {
|
struct ntsync_wait_args {
|
||||||
@@ -24,7 +30,8 @@ struct ntsync_wait_args {
|
@@ -23,7 +28,8 @@ struct ntsync_wait_args {
|
||||||
__u32 count;
|
__u32 count;
|
||||||
__u32 index;
|
__u32 index;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
@ -216,11 +212,11 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define NTSYNC_MAX_WAIT_COUNT 64
|
#define NTSYNC_MAX_WAIT_COUNT 64
|
||||||
@@ -32,6 +39,7 @@ struct ntsync_wait_args {
|
@@ -31,6 +37,7 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_CREATE_SEM _IOWR('N', 0x80, struct ntsync_sem_args)
|
#define NTSYNC_IOC_CREATE_SEM _IOW ('N', 0x80, struct ntsync_sem_args)
|
||||||
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
||||||
#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
||||||
+#define NTSYNC_IOC_CREATE_MUTEX _IOWR('N', 0x84, struct ntsync_sem_args)
|
+#define NTSYNC_IOC_CREATE_MUTEX _IOW ('N', 0x84, struct ntsync_mutex_args)
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
From cc9ade623cd90cd002fb86f3aa249af2e6e4019e Mon Sep 17 00:00:00 2001
|
From e349279c9dc7fc2136a764a16074a90ef3039f38 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:30 -0500
|
Date: Fri, 13 Dec 2024 13:34:47 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_UNLOCK.
|
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_UNLOCK.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtReleaseMutant().
|
This corresponds to the NT syscall NtReleaseMutant().
|
||||||
@ -17,7 +17,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@@ -396,6 +396,57 @@ static int ntsync_sem_post(struct ntsync
|
@@ -396,6 +396,57 @@ static int ntsync_sem_release(struct nts
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,8 +77,8 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_obj *obj = file->private_data;
|
struct ntsync_obj *obj = file->private_data;
|
||||||
@@ -415,6 +466,8 @@ static long ntsync_obj_ioctl(struct file
|
@@ -415,6 +466,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case NTSYNC_IOC_SEM_POST:
|
case NTSYNC_IOC_SEM_RELEASE:
|
||||||
return ntsync_sem_post(obj, argp);
|
return ntsync_sem_release(obj, argp);
|
||||||
+ case NTSYNC_IOC_MUTEX_UNLOCK:
|
+ case NTSYNC_IOC_MUTEX_UNLOCK:
|
||||||
+ return ntsync_mutex_unlock(obj, argp);
|
+ return ntsync_mutex_unlock(obj, argp);
|
||||||
default:
|
default:
|
||||||
@ -86,10 +86,10 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -42,5 +42,6 @@ struct ntsync_wait_args {
|
@@ -40,5 +40,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_CREATE_MUTEX _IOWR('N', 0x84, struct ntsync_sem_args)
|
#define NTSYNC_IOC_CREATE_MUTEX _IOW ('N', 0x84, struct ntsync_mutex_args)
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
+#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
+#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,6 +1,6 @@
|
|||||||
From dca3fe766afa42e34f5d3f62c0f2850760663176 Mon Sep 17 00:00:00 2001
|
From ebb60a10ac3c6b28ba7a46aa67b279d41ad9356d Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:31 -0500
|
Date: Fri, 13 Dec 2024 13:34:48 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_KILL.
|
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_KILL.
|
||||||
|
|
||||||
This does not correspond to any NT syscall. Rather, when a thread dies, it
|
This does not correspond to any NT syscall. Rather, when a thread dies, it
|
||||||
@ -111,7 +111,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
{
|
{
|
||||||
struct ntsync_obj *obj = file->private_data;
|
struct ntsync_obj *obj = file->private_data;
|
||||||
@@ -468,6 +522,8 @@ static long ntsync_obj_ioctl(struct file
|
@@ -468,6 +522,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
return ntsync_sem_post(obj, argp);
|
return ntsync_sem_release(obj, argp);
|
||||||
case NTSYNC_IOC_MUTEX_UNLOCK:
|
case NTSYNC_IOC_MUTEX_UNLOCK:
|
||||||
return ntsync_mutex_unlock(obj, argp);
|
return ntsync_mutex_unlock(obj, argp);
|
||||||
+ case NTSYNC_IOC_MUTEX_KILL:
|
+ case NTSYNC_IOC_MUTEX_KILL:
|
||||||
@ -119,7 +119,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
default:
|
default:
|
||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
||||||
}
|
}
|
||||||
@@ -658,6 +714,7 @@ static int setup_wait(struct ntsync_devi
|
@@ -652,6 +708,7 @@ static int setup_wait(struct ntsync_devi
|
||||||
q->owner = args->owner;
|
q->owner = args->owner;
|
||||||
atomic_set(&q->signaled, -1);
|
atomic_set(&q->signaled, -1);
|
||||||
q->all = all;
|
q->all = all;
|
||||||
@ -127,7 +127,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
q->count = count;
|
q->count = count;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
@@ -766,7 +823,7 @@ static int ntsync_wait_any(struct ntsync
|
@@ -760,7 +817,7 @@ static int ntsync_wait_any(struct ntsync
|
||||||
struct ntsync_wait_args __user *user_args = argp;
|
struct ntsync_wait_args __user *user_args = argp;
|
||||||
|
|
||||||
/* even if we caught a signal, we need to communicate success */
|
/* even if we caught a signal, we need to communicate success */
|
||||||
@ -136,7 +136,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
if (put_user(signaled, &user_args->index))
|
if (put_user(signaled, &user_args->index))
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
@@ -847,7 +904,7 @@ static int ntsync_wait_all(struct ntsync
|
@@ -841,7 +898,7 @@ static int ntsync_wait_all(struct ntsync
|
||||||
struct ntsync_wait_args __user *user_args = argp;
|
struct ntsync_wait_args __user *user_args = argp;
|
||||||
|
|
||||||
/* even if we caught a signal, we need to communicate success */
|
/* even if we caught a signal, we need to communicate success */
|
||||||
@ -147,9 +147,9 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -43,5 +43,6 @@ struct ntsync_wait_args {
|
@@ -41,5 +41,6 @@ struct ntsync_wait_args {
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
||||||
+#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
+#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
From 3f3bbc85f1e613364261d685b8197c32ffdeaad0 Mon Sep 17 00:00:00 2001
|
From f74c8259d49ea4c0e679902da9c7c95ec06ae65c Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:32 -0500
|
Date: Fri, 13 Dec 2024 13:34:49 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_CREATE_EVENT.
|
Subject: ntsync: Introduce NTSYNC_IOC_CREATE_EVENT.
|
||||||
|
|
||||||
This correspond to the NT syscall NtCreateEvent().
|
This correspond to the NT syscall NtCreateEvent().
|
||||||
@ -17,9 +17,9 @@ creation time.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 62 +++++++++++++++++++++++++++++++++++++
|
drivers/misc/ntsync.c | 59 +++++++++++++++++++++++++++++++++++++
|
||||||
include/uapi/linux/ntsync.h | 7 +++++
|
include/uapi/linux/ntsync.h | 6 ++++
|
||||||
2 files changed, 69 insertions(+)
|
2 files changed, 65 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@ -91,13 +91,12 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
/*
|
/*
|
||||||
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||||
* invalid.
|
* invalid.
|
||||||
@@ -628,6 +661,30 @@ static int ntsync_create_mutex(struct nt
|
@@ -622,6 +655,27 @@ static int ntsync_create_mutex(struct nt
|
||||||
return put_user(fd, &user_args->mutex);
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int ntsync_create_event(struct ntsync_device *dev, void __user *argp)
|
+static int ntsync_create_event(struct ntsync_device *dev, void __user *argp)
|
||||||
+{
|
+{
|
||||||
+ struct ntsync_event_args __user *user_args = argp;
|
|
||||||
+ struct ntsync_event_args args;
|
+ struct ntsync_event_args args;
|
||||||
+ struct ntsync_obj *event;
|
+ struct ntsync_obj *event;
|
||||||
+ int fd;
|
+ int fd;
|
||||||
@ -111,18 +110,16 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ event->u.event.manual = args.manual;
|
+ event->u.event.manual = args.manual;
|
||||||
+ event->u.event.signaled = args.signaled;
|
+ event->u.event.signaled = args.signaled;
|
||||||
+ fd = ntsync_obj_get_fd(event);
|
+ fd = ntsync_obj_get_fd(event);
|
||||||
+ if (fd < 0) {
|
+ if (fd < 0)
|
||||||
+ kfree(event);
|
+ kfree(event);
|
||||||
+ return fd;
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ return put_user(fd, &user_args->event);
|
+ return fd;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
||||||
{
|
{
|
||||||
struct file *file = fget(fd);
|
struct file *file = fget(fd);
|
||||||
@@ -758,6 +815,9 @@ static void try_wake_any_obj(struct ntsy
|
@@ -752,6 +806,9 @@ static void try_wake_any_obj(struct ntsy
|
||||||
case NTSYNC_TYPE_MUTEX:
|
case NTSYNC_TYPE_MUTEX:
|
||||||
try_wake_any_mutex(obj);
|
try_wake_any_mutex(obj);
|
||||||
break;
|
break;
|
||||||
@ -132,7 +129,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -947,6 +1007,8 @@ static long ntsync_char_ioctl(struct fil
|
@@ -941,6 +998,8 @@ static long ntsync_char_ioctl(struct fil
|
||||||
void __user *argp = (void __user *)parm;
|
void __user *argp = (void __user *)parm;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
@ -143,12 +140,11 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
case NTSYNC_IOC_CREATE_SEM:
|
case NTSYNC_IOC_CREATE_SEM:
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -22,6 +22,12 @@ struct ntsync_mutex_args {
|
@@ -20,6 +20,11 @@ struct ntsync_mutex_args {
|
||||||
__u32 count;
|
__u32 count;
|
||||||
};
|
};
|
||||||
|
|
||||||
+struct ntsync_event_args {
|
+struct ntsync_event_args {
|
||||||
+ __u32 event;
|
|
||||||
+ __u32 manual;
|
+ __u32 manual;
|
||||||
+ __u32 signaled;
|
+ __u32 signaled;
|
||||||
+};
|
+};
|
||||||
@ -156,11 +152,11 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
#define NTSYNC_WAIT_REALTIME 0x1
|
#define NTSYNC_WAIT_REALTIME 0x1
|
||||||
|
|
||||||
struct ntsync_wait_args {
|
struct ntsync_wait_args {
|
||||||
@@ -40,6 +46,7 @@ struct ntsync_wait_args {
|
@@ -38,6 +43,7 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
|
||||||
#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
|
||||||
#define NTSYNC_IOC_CREATE_MUTEX _IOWR('N', 0x84, struct ntsync_sem_args)
|
#define NTSYNC_IOC_CREATE_MUTEX _IOW ('N', 0x84, struct ntsync_mutex_args)
|
||||||
+#define NTSYNC_IOC_CREATE_EVENT _IOWR('N', 0x87, struct ntsync_event_args)
|
+#define NTSYNC_IOC_CREATE_EVENT _IOW ('N', 0x87, struct ntsync_event_args)
|
||||||
|
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
@ -1,6 +1,6 @@
|
|||||||
From a6f107f17a976008b85c3e269bf4196e595d3f52 Mon Sep 17 00:00:00 2001
|
From bf60db9cfeccc8f92636b6dcf2eccd7fcd8d84f3 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:33 -0500
|
Date: Fri, 13 Dec 2024 13:34:50 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_SET.
|
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_SET.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtSetEvent().
|
This corresponds to the NT syscall NtSetEvent().
|
||||||
@ -58,8 +58,8 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -51,5 +51,6 @@ struct ntsync_wait_args {
|
@@ -48,5 +48,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
|
#define NTSYNC_IOC_SEM_RELEASE _IOWR('N', 0x81, __u32)
|
||||||
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
||||||
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
||||||
+#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
+#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
@ -1,6 +1,6 @@
|
|||||||
From aa3ebb5870eb9ed259aba2ed4e07e9993e6cd978 Mon Sep 17 00:00:00 2001
|
From f2de3c99a840cac45446515dd268cb9d64f9f892 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:34 -0500
|
Date: Fri, 13 Dec 2024 13:34:51 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_RESET.
|
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_RESET.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtResetEvent().
|
This corresponds to the NT syscall NtResetEvent().
|
||||||
@ -55,7 +55,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -52,5 +52,6 @@ struct ntsync_wait_args {
|
@@ -49,5 +49,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
|
||||||
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
@ -1,6 +1,6 @@
|
|||||||
From 99bca5d776a3011214041c42107a210fe315a35e Mon Sep 17 00:00:00 2001
|
From 50c791dde217f9fdc1785de77fa2ae888d6bdb4e Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:35 -0500
|
Date: Fri, 13 Dec 2024 13:34:52 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_PULSE.
|
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_PULSE.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtPulseEvent().
|
This corresponds to the NT syscall NtPulseEvent().
|
||||||
@ -51,7 +51,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -53,5 +53,6 @@ struct ntsync_wait_args {
|
@@ -50,5 +50,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
@ -1,6 +1,6 @@
|
|||||||
From 1ef0ea672662bd19e7c6a4eac1067d11e50844b2 Mon Sep 17 00:00:00 2001
|
From 248013d9877d47dc5219344268c10b62de1f52f2 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:36 -0500
|
Date: Fri, 13 Dec 2024 13:34:53 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_SEM_READ.
|
Subject: ntsync: Introduce NTSYNC_IOC_SEM_READ.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtQuerySemaphore().
|
This corresponds to the NT syscall NtQuerySemaphore().
|
||||||
@ -9,13 +9,13 @@ This returns the current count and maximum count of the semaphore.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 26 ++++++++++++++++++++++++++
|
drivers/misc/ntsync.c | 24 ++++++++++++++++++++++++
|
||||||
include/uapi/linux/ntsync.h | 1 +
|
include/uapi/linux/ntsync.h | 1 +
|
||||||
2 files changed, 27 insertions(+)
|
2 files changed, 25 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@@ -583,6 +583,30 @@ static int ntsync_event_reset(struct nts
|
@@ -583,6 +583,28 @@ static int ntsync_event_reset(struct nts
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,8 +29,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ if (sem->type != NTSYNC_TYPE_SEM)
|
+ if (sem->type != NTSYNC_TYPE_SEM)
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+
|
+
|
||||||
+ args.sem = 0;
|
|
||||||
+
|
|
||||||
+ all = ntsync_lock_obj(dev, sem);
|
+ all = ntsync_lock_obj(dev, sem);
|
||||||
+
|
+
|
||||||
+ args.count = sem->u.sem.count;
|
+ args.count = sem->u.sem.count;
|
||||||
@ -46,10 +44,10 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
struct ntsync_obj *obj = file->private_data;
|
struct ntsync_obj *obj = file->private_data;
|
||||||
@@ -602,6 +626,8 @@ static long ntsync_obj_ioctl(struct file
|
@@ -602,6 +624,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case NTSYNC_IOC_SEM_POST:
|
case NTSYNC_IOC_SEM_RELEASE:
|
||||||
return ntsync_sem_post(obj, argp);
|
return ntsync_sem_release(obj, argp);
|
||||||
+ case NTSYNC_IOC_SEM_READ:
|
+ case NTSYNC_IOC_SEM_READ:
|
||||||
+ return ntsync_sem_read(obj, argp);
|
+ return ntsync_sem_read(obj, argp);
|
||||||
case NTSYNC_IOC_MUTEX_UNLOCK:
|
case NTSYNC_IOC_MUTEX_UNLOCK:
|
||||||
@ -57,7 +55,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
case NTSYNC_IOC_MUTEX_KILL:
|
case NTSYNC_IOC_MUTEX_KILL:
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -54,5 +54,6 @@ struct ntsync_wait_args {
|
@@ -51,5 +51,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
@ -1,6 +1,6 @@
|
|||||||
From 7891b7d15abd12975aebb955821fbc43353b45d6 Mon Sep 17 00:00:00 2001
|
From 8fc7a993fd8bc6b1a09b4b965bee7d16bb2156cc Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:37 -0500
|
Date: Fri, 13 Dec 2024 13:34:54 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_READ.
|
Subject: ntsync: Introduce NTSYNC_IOC_MUTEX_READ.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtQueryMutant().
|
This corresponds to the NT syscall NtQueryMutant().
|
||||||
@ -9,13 +9,13 @@ This returns the recursion count, owner, and abandoned state of the mutex.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 28 ++++++++++++++++++++++++++++
|
drivers/misc/ntsync.c | 26 ++++++++++++++++++++++++++
|
||||||
include/uapi/linux/ntsync.h | 1 +
|
include/uapi/linux/ntsync.h | 1 +
|
||||||
2 files changed, 29 insertions(+)
|
2 files changed, 27 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@@ -607,6 +607,32 @@ static int ntsync_sem_read(struct ntsync
|
@@ -605,6 +605,30 @@ static int ntsync_sem_read(struct ntsync
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,8 +30,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ if (mutex->type != NTSYNC_TYPE_MUTEX)
|
+ if (mutex->type != NTSYNC_TYPE_MUTEX)
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+
|
+
|
||||||
+ args.mutex = 0;
|
|
||||||
+
|
|
||||||
+ all = ntsync_lock_obj(dev, mutex);
|
+ all = ntsync_lock_obj(dev, mutex);
|
||||||
+
|
+
|
||||||
+ args.count = mutex->u.mutex.count;
|
+ args.count = mutex->u.mutex.count;
|
||||||
@ -48,7 +46,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
struct ntsync_obj *obj = file->private_data;
|
struct ntsync_obj *obj = file->private_data;
|
||||||
@@ -632,6 +658,8 @@ static long ntsync_obj_ioctl(struct file
|
@@ -630,6 +654,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
return ntsync_mutex_unlock(obj, argp);
|
return ntsync_mutex_unlock(obj, argp);
|
||||||
case NTSYNC_IOC_MUTEX_KILL:
|
case NTSYNC_IOC_MUTEX_KILL:
|
||||||
return ntsync_mutex_kill(obj, argp);
|
return ntsync_mutex_kill(obj, argp);
|
||||||
@ -59,7 +57,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
case NTSYNC_IOC_EVENT_RESET:
|
case NTSYNC_IOC_EVENT_RESET:
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -55,5 +55,6 @@ struct ntsync_wait_args {
|
@@ -52,5 +52,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
|
||||||
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
||||||
#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
|
#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
|
@ -1,6 +1,6 @@
|
|||||||
From 35ff252f99aa4002e0c2ecef37314a422969791b Mon Sep 17 00:00:00 2001
|
From aed34cc9c28dba5e3735d7c59e1970a32eefc5f4 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:38 -0500
|
Date: Fri, 13 Dec 2024 13:34:55 -0600
|
||||||
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_READ.
|
Subject: ntsync: Introduce NTSYNC_IOC_EVENT_READ.
|
||||||
|
|
||||||
This corresponds to the NT syscall NtQueryEvent().
|
This corresponds to the NT syscall NtQueryEvent().
|
||||||
@ -9,13 +9,13 @@ This returns the signaled state of the event and whether it is manual-reset.
|
|||||||
|
|
||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
drivers/misc/ntsync.c | 26 ++++++++++++++++++++++++++
|
drivers/misc/ntsync.c | 24 ++++++++++++++++++++++++
|
||||||
include/uapi/linux/ntsync.h | 1 +
|
include/uapi/linux/ntsync.h | 1 +
|
||||||
2 files changed, 27 insertions(+)
|
2 files changed, 25 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@@ -633,6 +633,30 @@ static int ntsync_mutex_read(struct ntsy
|
@@ -629,6 +629,28 @@ static int ntsync_mutex_read(struct ntsy
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,8 +29,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ if (event->type != NTSYNC_TYPE_EVENT)
|
+ if (event->type != NTSYNC_TYPE_EVENT)
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+
|
+
|
||||||
+ args.event = 0;
|
|
||||||
+
|
|
||||||
+ all = ntsync_lock_obj(dev, event);
|
+ all = ntsync_lock_obj(dev, event);
|
||||||
+
|
+
|
||||||
+ args.manual = event->u.event.manual;
|
+ args.manual = event->u.event.manual;
|
||||||
@ -46,7 +44,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
static int ntsync_obj_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
struct ntsync_obj *obj = file->private_data;
|
struct ntsync_obj *obj = file->private_data;
|
||||||
@@ -666,6 +690,8 @@ static long ntsync_obj_ioctl(struct file
|
@@ -662,6 +684,8 @@ static long ntsync_obj_ioctl(struct file
|
||||||
return ntsync_event_reset(obj, argp);
|
return ntsync_event_reset(obj, argp);
|
||||||
case NTSYNC_IOC_EVENT_PULSE:
|
case NTSYNC_IOC_EVENT_PULSE:
|
||||||
return ntsync_event_set(obj, argp, true);
|
return ntsync_event_set(obj, argp, true);
|
||||||
@ -57,7 +55,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
}
|
}
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -56,5 +56,6 @@ struct ntsync_wait_args {
|
@@ -53,5 +53,6 @@ struct ntsync_wait_args {
|
||||||
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
|
||||||
#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
|
#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
|
||||||
#define NTSYNC_IOC_MUTEX_READ _IOR ('N', 0x8c, struct ntsync_mutex_args)
|
#define NTSYNC_IOC_MUTEX_READ _IOR ('N', 0x8c, struct ntsync_mutex_args)
|
@ -1,6 +1,6 @@
|
|||||||
From 2c391d57d1393cd46bf8bab08232ddc3dd32d5e5 Mon Sep 17 00:00:00 2001
|
From 361a7fb848ba9cac87855cb68f9ab000ed1027be Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:39 -0500
|
Date: Fri, 13 Dec 2024 13:34:56 -0600
|
||||||
Subject: ntsync: Introduce alertable waits.
|
Subject: ntsync: Introduce alertable waits.
|
||||||
|
|
||||||
NT waits can optionally be made "alertable". This is a special channel for
|
NT waits can optionally be made "alertable". This is a special channel for
|
||||||
@ -21,7 +21,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
--- a/drivers/misc/ntsync.c
|
--- a/drivers/misc/ntsync.c
|
||||||
+++ b/drivers/misc/ntsync.c
|
+++ b/drivers/misc/ntsync.c
|
||||||
@@ -884,22 +884,29 @@ static int setup_wait(struct ntsync_devi
|
@@ -869,22 +869,29 @@ static int setup_wait(struct ntsync_devi
|
||||||
const struct ntsync_wait_args *args, bool all,
|
const struct ntsync_wait_args *args, bool all,
|
||||||
struct ntsync_q **ret_q)
|
struct ntsync_q **ret_q)
|
||||||
{
|
{
|
||||||
@ -54,7 +54,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
if (!q)
|
if (!q)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
q->task = current;
|
q->task = current;
|
||||||
@@ -909,7 +916,7 @@ static int setup_wait(struct ntsync_devi
|
@@ -894,7 +901,7 @@ static int setup_wait(struct ntsync_devi
|
||||||
q->ownerdead = false;
|
q->ownerdead = false;
|
||||||
q->count = count;
|
q->count = count;
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_q_entry *entry = &q->entries[i];
|
struct ntsync_q_entry *entry = &q->entries[i];
|
||||||
struct ntsync_obj *obj = get_obj(dev, fds[i]);
|
struct ntsync_obj *obj = get_obj(dev, fds[i]);
|
||||||
|
|
||||||
@@ -959,10 +966,10 @@ static void try_wake_any_obj(struct ntsy
|
@@ -944,10 +951,10 @@ static void try_wake_any_obj(struct ntsy
|
||||||
static int ntsync_wait_any(struct ntsync_device *dev, void __user *argp)
|
static int ntsync_wait_any(struct ntsync_device *dev, void __user *argp)
|
||||||
{
|
{
|
||||||
struct ntsync_wait_args args;
|
struct ntsync_wait_args args;
|
||||||
@ -75,7 +75,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (copy_from_user(&args, argp, sizeof(args)))
|
if (copy_from_user(&args, argp, sizeof(args)))
|
||||||
@@ -972,9 +979,13 @@ static int ntsync_wait_any(struct ntsync
|
@@ -957,9 +964,13 @@ static int ntsync_wait_any(struct ntsync
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_q_entry *entry = &q->entries[i];
|
struct ntsync_q_entry *entry = &q->entries[i];
|
||||||
struct ntsync_obj *obj = entry->obj;
|
struct ntsync_obj *obj = entry->obj;
|
||||||
|
|
||||||
@@ -983,9 +994,15 @@ static int ntsync_wait_any(struct ntsync
|
@@ -968,9 +979,15 @@ static int ntsync_wait_any(struct ntsync
|
||||||
ntsync_unlock_obj(dev, obj, all);
|
ntsync_unlock_obj(dev, obj, all);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_obj *obj = q->entries[i].obj;
|
struct ntsync_obj *obj = q->entries[i].obj;
|
||||||
|
|
||||||
if (atomic_read(&q->signaled) != -1)
|
if (atomic_read(&q->signaled) != -1)
|
||||||
@@ -1002,7 +1019,7 @@ static int ntsync_wait_any(struct ntsync
|
@@ -987,7 +1004,7 @@ static int ntsync_wait_any(struct ntsync
|
||||||
|
|
||||||
/* and finally, unqueue */
|
/* and finally, unqueue */
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_q_entry *entry = &q->entries[i];
|
struct ntsync_q_entry *entry = &q->entries[i];
|
||||||
struct ntsync_obj *obj = entry->obj;
|
struct ntsync_obj *obj = entry->obj;
|
||||||
|
|
||||||
@@ -1062,6 +1079,14 @@ static int ntsync_wait_all(struct ntsync
|
@@ -1047,6 +1064,14 @@ static int ntsync_wait_all(struct ntsync
|
||||||
*/
|
*/
|
||||||
list_add_tail(&entry->node, &obj->all_waiters);
|
list_add_tail(&entry->node, &obj->all_waiters);
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
/* check if we are already signaled */
|
/* check if we are already signaled */
|
||||||
|
|
||||||
@@ -1069,6 +1094,21 @@ static int ntsync_wait_all(struct ntsync
|
@@ -1054,6 +1079,21 @@ static int ntsync_wait_all(struct ntsync
|
||||||
|
|
||||||
mutex_unlock(&dev->wait_all_lock);
|
mutex_unlock(&dev->wait_all_lock);
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
/* sleep */
|
/* sleep */
|
||||||
|
|
||||||
ret = ntsync_schedule(q, &args);
|
ret = ntsync_schedule(q, &args);
|
||||||
@@ -1094,6 +1134,18 @@ static int ntsync_wait_all(struct ntsync
|
@@ -1079,6 +1119,18 @@ static int ntsync_wait_all(struct ntsync
|
||||||
|
|
||||||
mutex_unlock(&dev->wait_all_lock);
|
mutex_unlock(&dev->wait_all_lock);
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
struct ntsync_wait_args __user *user_args = argp;
|
struct ntsync_wait_args __user *user_args = argp;
|
||||||
--- a/include/uapi/linux/ntsync.h
|
--- a/include/uapi/linux/ntsync.h
|
||||||
+++ b/include/uapi/linux/ntsync.h
|
+++ b/include/uapi/linux/ntsync.h
|
||||||
@@ -37,7 +37,8 @@ struct ntsync_wait_args {
|
@@ -34,7 +34,8 @@ struct ntsync_wait_args {
|
||||||
__u32 index;
|
__u32 index;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
__u32 owner;
|
__u32 owner;
|
@ -1,6 +1,6 @@
|
|||||||
From 8d87043cd76368bb9996ba541d12e40cbb4201e5 Mon Sep 17 00:00:00 2001
|
From b240b27e5348d38acbc4a12f1dc762dd1845f391 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:52 -0500
|
Date: Fri, 13 Dec 2024 13:35:09 -0600
|
||||||
Subject: maintainers: Add an entry for ntsync.
|
Subject: maintainers: Add an entry for ntsync.
|
||||||
|
|
||||||
Add myself as maintainer, supported by CodeWeavers.
|
Add myself as maintainer, supported by CodeWeavers.
|
@ -1,6 +1,6 @@
|
|||||||
From 4cb25d42d38f1e0b144b084674591b70afa60bb0 Mon Sep 17 00:00:00 2001
|
From 733e310bb840117593a0eb4726fa63b34fea9cc3 Mon Sep 17 00:00:00 2001
|
||||||
From: Elizabeth Figura <zfigura@codeweavers.com>
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
Date: Sun, 19 May 2024 15:24:53 -0500
|
Date: Fri, 13 Dec 2024 13:35:10 -0600
|
||||||
Subject: docs: ntsync: Add documentation for the ntsync uAPI.
|
Subject: docs: ntsync: Add documentation for the ntsync uAPI.
|
||||||
|
|
||||||
Add an overall explanation of the driver architecture, and complete and precise
|
Add an overall explanation of the driver architecture, and complete and precise
|
||||||
@ -9,8 +9,8 @@ specification for its intended behaviour.
|
|||||||
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
---
|
---
|
||||||
Documentation/userspace-api/index.rst | 1 +
|
Documentation/userspace-api/index.rst | 1 +
|
||||||
Documentation/userspace-api/ntsync.rst | 398 +++++++++++++++++++++++++
|
Documentation/userspace-api/ntsync.rst | 385 +++++++++++++++++++++++++
|
||||||
2 files changed, 399 insertions(+)
|
2 files changed, 386 insertions(+)
|
||||||
create mode 100644 Documentation/userspace-api/ntsync.rst
|
create mode 100644 Documentation/userspace-api/ntsync.rst
|
||||||
|
|
||||||
--- a/Documentation/userspace-api/index.rst
|
--- a/Documentation/userspace-api/index.rst
|
||||||
@ -25,7 +25,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Documentation/userspace-api/ntsync.rst
|
+++ b/Documentation/userspace-api/ntsync.rst
|
||||||
@@ -0,0 +1,398 @@
|
@@ -0,0 +1,385 @@
|
||||||
+===================================
|
+===================================
|
||||||
+NT synchronization primitive driver
|
+NT synchronization primitive driver
|
||||||
+===================================
|
+===================================
|
||||||
@ -101,19 +101,16 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+structures used in ioctl calls::
|
+structures used in ioctl calls::
|
||||||
+
|
+
|
||||||
+ struct ntsync_sem_args {
|
+ struct ntsync_sem_args {
|
||||||
+ __u32 sem;
|
|
||||||
+ __u32 count;
|
+ __u32 count;
|
||||||
+ __u32 max;
|
+ __u32 max;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ struct ntsync_mutex_args {
|
+ struct ntsync_mutex_args {
|
||||||
+ __u32 mutex;
|
|
||||||
+ __u32 owner;
|
+ __u32 owner;
|
||||||
+ __u32 count;
|
+ __u32 count;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ struct ntsync_event_args {
|
+ struct ntsync_event_args {
|
||||||
+ __u32 event;
|
|
||||||
+ __u32 signaled;
|
+ __u32 signaled;
|
||||||
+ __u32 manual;
|
+ __u32 manual;
|
||||||
+ };
|
+ };
|
||||||
@ -130,7 +127,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+Depending on the ioctl, members of the structure may be used as input,
|
+Depending on the ioctl, members of the structure may be used as input,
|
||||||
+output, or not at all. All ioctls return 0 on success.
|
+output, or not at all.
|
||||||
+
|
+
|
||||||
+The ioctls on the device file are as follows:
|
+The ioctls on the device file are as follows:
|
||||||
+
|
+
|
||||||
@ -141,14 +138,13 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``sem``
|
|
||||||
+ - On output, contains a file descriptor to the created semaphore.
|
|
||||||
+ * - ``count``
|
+ * - ``count``
|
||||||
+ - Initial count of the semaphore.
|
+ - Initial count of the semaphore.
|
||||||
+ * - ``max``
|
+ * - ``max``
|
||||||
+ - Maximum count of the semaphore.
|
+ - Maximum count of the semaphore.
|
||||||
+
|
+
|
||||||
+ Fails with ``EINVAL`` if ``count`` is greater than ``max``.
|
+ Fails with ``EINVAL`` if ``count`` is greater than ``max``.
|
||||||
|
+ On success, returns a file descriptor the created semaphore.
|
||||||
+
|
+
|
||||||
+.. c:macro:: NTSYNC_IOC_CREATE_MUTEX
|
+.. c:macro:: NTSYNC_IOC_CREATE_MUTEX
|
||||||
+
|
+
|
||||||
@ -157,8 +153,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``mutex``
|
|
||||||
+ - On output, contains a file descriptor to the created mutex.
|
|
||||||
+ * - ``count``
|
+ * - ``count``
|
||||||
+ - Initial recursion count of the mutex.
|
+ - Initial recursion count of the mutex.
|
||||||
+ * - ``owner``
|
+ * - ``owner``
|
||||||
@ -166,6 +160,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ If ``owner`` is nonzero and ``count`` is zero, or if ``owner`` is
|
+ If ``owner`` is nonzero and ``count`` is zero, or if ``owner`` is
|
||||||
+ zero and ``count`` is nonzero, the function fails with ``EINVAL``.
|
+ zero and ``count`` is nonzero, the function fails with ``EINVAL``.
|
||||||
|
+ On success, returns a file descriptor the created mutex.
|
||||||
+
|
+
|
||||||
+.. c:macro:: NTSYNC_IOC_CREATE_EVENT
|
+.. c:macro:: NTSYNC_IOC_CREATE_EVENT
|
||||||
+
|
+
|
||||||
@ -174,8 +169,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``event``
|
|
||||||
+ - On output, contains a file descriptor to the created event.
|
|
||||||
+ * - ``signaled``
|
+ * - ``signaled``
|
||||||
+ - If nonzero, the event is initially signaled, otherwise
|
+ - If nonzero, the event is initially signaled, otherwise
|
||||||
+ nonsignaled.
|
+ nonsignaled.
|
||||||
@ -183,6 +176,8 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+ - If nonzero, the event is a manual-reset event, otherwise
|
+ - If nonzero, the event is a manual-reset event, otherwise
|
||||||
+ auto-reset.
|
+ auto-reset.
|
||||||
+
|
+
|
||||||
|
+ On success, returns a file descriptor the created event.
|
||||||
|
+
|
||||||
+The ioctls on the individual objects are as follows:
|
+The ioctls on the individual objects are as follows:
|
||||||
+
|
+
|
||||||
+.. c:macro:: NTSYNC_IOC_SEM_POST
|
+.. c:macro:: NTSYNC_IOC_SEM_POST
|
||||||
@ -205,8 +200,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``mutex``
|
|
||||||
+ - Ignored.
|
|
||||||
+ * - ``owner``
|
+ * - ``owner``
|
||||||
+ - Specifies the owner trying to release this mutex.
|
+ - Specifies the owner trying to release this mutex.
|
||||||
+ * - ``count``
|
+ * - ``count``
|
||||||
@ -255,8 +248,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``sem``
|
|
||||||
+ - Ignored.
|
|
||||||
+ * - ``count``
|
+ * - ``count``
|
||||||
+ - On output, contains the current count of the semaphore.
|
+ - On output, contains the current count of the semaphore.
|
||||||
+ * - ``max``
|
+ * - ``max``
|
||||||
@ -269,8 +260,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``mutex``
|
|
||||||
+ - Ignored.
|
|
||||||
+ * - ``owner``
|
+ * - ``owner``
|
||||||
+ - On output, contains the current owner of the mutex, or zero
|
+ - On output, contains the current owner of the mutex, or zero
|
||||||
+ if the mutex is not currently owned.
|
+ if the mutex is not currently owned.
|
||||||
@ -288,8 +277,6 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
|||||||
+
|
+
|
||||||
+ .. list-table::
|
+ .. list-table::
|
||||||
+
|
+
|
||||||
+ * - ``event``
|
|
||||||
+ - Ignored.
|
|
||||||
+ * - ``signaled``
|
+ * - ``signaled``
|
||||||
+ - On output, contains the current state of the event.
|
+ - On output, contains the current state of the event.
|
||||||
+ * - ``manual``
|
+ * - ``manual``
|
25
debian/patches/misc-ntsync7/0018-ntsync-No-longer-depend-on-BROKEN.patch
vendored
Normal file
25
debian/patches/misc-ntsync7/0018-ntsync-No-longer-depend-on-BROKEN.patch
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 4871bb89577d78a3d55b44e47c3a4f677dbdc89b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
Date: Fri, 13 Dec 2024 13:35:11 -0600
|
||||||
|
Subject: ntsync: No longer depend on BROKEN.
|
||||||
|
|
||||||
|
f5b335dc025cfee90957efa90dc72fada0d5abb4 ("misc: ntsync: mark driver as "broken"
|
||||||
|
to prevent from building") was committed to avoid the driver being used while
|
||||||
|
only part of its functionality was released. Since the rest of the functionality
|
||||||
|
has now been committed, revert this.
|
||||||
|
|
||||||
|
Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||||
|
---
|
||||||
|
drivers/misc/Kconfig | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/misc/Kconfig
|
||||||
|
+++ b/drivers/misc/Kconfig
|
||||||
|
@@ -517,7 +517,6 @@ config OPEN_DICE
|
||||||
|
|
||||||
|
config NTSYNC
|
||||||
|
tristate "NT synchronization primitive emulation"
|
||||||
|
- depends on BROKEN
|
||||||
|
help
|
||||||
|
This module provides kernel support for emulation of Windows NT
|
||||||
|
synchronization primitives. It is not a hardware driver.
|
@ -13,7 +13,7 @@ dependency on CONFIG_ARC and adds RUSTFLAGS.
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -812,6 +812,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointe
|
@@ -813,6 +813,9 @@ KBUILD_CFLAGS += -fno-delete-null-pointe
|
||||||
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
KBUILD_CFLAGS += -O2
|
KBUILD_CFLAGS += -O2
|
||||||
KBUILD_RUSTFLAGS += -Copt-level=2
|
KBUILD_RUSTFLAGS += -Copt-level=2
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -820,6 +820,10 @@ KBUILD_CFLAGS += -Os
|
@@ -821,6 +821,10 @@ KBUILD_CFLAGS += -Os
|
||||||
KBUILD_RUSTFLAGS += -Copt-level=s
|
KBUILD_RUSTFLAGS += -Copt-level=s
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -824,6 +824,13 @@ ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
@@ -825,6 +825,13 @@ ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fivopts)
|
KBUILD_CFLAGS += $(call cc-option,-fivopts)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
24
debian/patches/mixed-arch/0007-PF-kbuild-6.12-adopt-proposed-upstream-change-for-gener.patch
vendored
Normal file
24
debian/patches/mixed-arch/0007-PF-kbuild-6.12-adopt-proposed-upstream-change-for-gener.patch
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
From 578cb97f41beb5d2dde81b8a4c1db6e01e8bcc6a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Oleksandr Natalenko <oleksandr@natalenko.name>
|
||||||
|
Date: Wed, 11 Dec 2024 08:50:50 +0100
|
||||||
|
Subject: kbuild-6.12: adopt proposed upstream change for generic CPUs
|
||||||
|
|
||||||
|
Link: https://lore.kernel.org/lkml/20241210144945.2325330-4-arnd@kernel.org/
|
||||||
|
Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
|
||||||
|
---
|
||||||
|
arch/x86/Makefile | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
--- a/arch/x86/Makefile
|
||||||
|
+++ b/arch/x86/Makefile
|
||||||
|
@@ -184,8 +184,8 @@ else
|
||||||
|
cflags-$(CONFIG_MCORE2) += -march=core2
|
||||||
|
cflags-$(CONFIG_MATOM) += -march=bonnell
|
||||||
|
ifeq ($(CONFIG_X86_64_VERSION),1)
|
||||||
|
- cflags-$(CONFIG_GENERIC_CPU) += -mtune=generic
|
||||||
|
- rustflags-$(CONFIG_GENERIC_CPU) += -Ztune-cpu=generic
|
||||||
|
+ cflags-$(CONFIG_GENERIC_CPU) += -march=x86-64 -mtune=generic
|
||||||
|
+ rustflags-$(CONFIG_GENERIC_CPU) += -Ctarget-cpu=x86-64 -Ztune-cpu=generic
|
||||||
|
else
|
||||||
|
cflags-$(CONFIG_GENERIC_CPU) += -march=x86-64-v$(CONFIG_X86_64_VERSION)
|
||||||
|
rustflags-$(CONFIG_GENERIC_CPU) += -Ctarget-cpu=x86-64-v$(CONFIG_X86_64_VERSION)
|
@ -142,7 +142,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
* and hopefully then we'll have sufficient space.
|
* and hopefully then we'll have sufficient space.
|
||||||
--- a/net/ipv4/tcp_ipv4.c
|
--- a/net/ipv4/tcp_ipv4.c
|
||||||
+++ b/net/ipv4/tcp_ipv4.c
|
+++ b/net/ipv4/tcp_ipv4.c
|
||||||
@@ -3524,6 +3524,7 @@ static int __net_init tcp_sk_init(struct
|
@@ -3525,6 +3525,7 @@ static int __net_init tcp_sk_init(struct
|
||||||
|
|
||||||
net->ipv4.sysctl_tcp_syn_linear_timeouts = 4;
|
net->ipv4.sysctl_tcp_syn_linear_timeouts = 4;
|
||||||
net->ipv4.sysctl_tcp_shrink_window = 0;
|
net->ipv4.sysctl_tcp_shrink_window = 0;
|
||||||
|
@ -180,7 +180,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
/*
|
/*
|
||||||
* Some NVIDIA GPU devices do not work with bus reset, SBR needs to be
|
* Some NVIDIA GPU devices do not work with bus reset, SBR needs to be
|
||||||
* prevented for those affected devices.
|
* prevented for those affected devices.
|
||||||
@@ -5168,6 +5268,8 @@ static const struct pci_dev_acs_enabled
|
@@ -5171,6 +5271,8 @@ static const struct pci_dev_acs_enabled
|
||||||
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
|
||||||
/* Wangxun nics */
|
/* Wangxun nics */
|
||||||
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
{ PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs },
|
||||||
|
@ -12,7 +12,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -996,15 +996,8 @@ export CC_FLAGS_FPU
|
@@ -997,15 +997,8 @@ export CC_FLAGS_FPU
|
||||||
export CC_FLAGS_NO_FPU
|
export CC_FLAGS_NO_FPU
|
||||||
|
|
||||||
ifneq ($(CONFIG_FUNCTION_ALIGNMENT),0)
|
ifneq ($(CONFIG_FUNCTION_ALIGNMENT),0)
|
||||||
|
@ -11,11 +11,11 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
|
|
||||||
--- a/scripts/setlocalversion
|
--- a/scripts/setlocalversion
|
||||||
+++ b/scripts/setlocalversion
|
+++ b/scripts/setlocalversion
|
||||||
@@ -92,7 +92,6 @@ scm_version()
|
@@ -113,7 +113,6 @@ scm_version()
|
||||||
# If only the short version is requested, don't bother
|
# If only the short version is requested, don't bother
|
||||||
# running further git commands
|
# running further git commands
|
||||||
if $short; then
|
if $short; then
|
||||||
- echo "+"
|
- echo "+"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
# If we are past the tagged commit, we pretty print it.
|
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|||||||
|
|
||||||
--- a/scripts/setlocalversion
|
--- a/scripts/setlocalversion
|
||||||
+++ b/scripts/setlocalversion
|
+++ b/scripts/setlocalversion
|
||||||
@@ -182,4 +182,4 @@ elif [ "${LOCALVERSION+set}" != "set" ];
|
@@ -204,4 +204,4 @@ elif [ "${LOCALVERSION+set}" != "set" ];
|
||||||
scm_version="$(scm_version --short)"
|
scm_version="$(scm_version --short)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
|
|||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1018,11 +1018,6 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
@@ -1019,11 +1019,6 @@ KBUILD_CFLAGS += -fno-strict-overflow
|
||||||
# Make sure -fstack-check isn't enabled (like gentoo apparently did)
|
# Make sure -fstack-check isn't enabled (like gentoo apparently did)
|
||||||
KBUILD_CFLAGS += -fno-stack-check
|
KBUILD_CFLAGS += -fno-stack-check
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
|||||||
*/
|
*/
|
||||||
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
||||||
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
|
||||||
@@ -3272,6 +3272,9 @@ static ssize_t amdgpu_hwmon_show_power_c
|
@@ -3276,6 +3276,9 @@ static ssize_t amdgpu_hwmon_show_power_c
|
||||||
struct device_attribute *attr,
|
struct device_attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
{
|
{
|
||||||
@ -61,7 +61,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
|||||||
|
|
||||||
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||||
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||||||
@@ -2779,7 +2779,10 @@ int smu_get_power_limit(void *handle,
|
@@ -2792,7 +2792,10 @@ int smu_get_power_limit(void *handle,
|
||||||
*limit = smu->max_power_limit;
|
*limit = smu->max_power_limit;
|
||||||
break;
|
break;
|
||||||
case SMU_PPT_LIMIT_MIN:
|
case SMU_PPT_LIMIT_MIN:
|
||||||
@ -73,7 +73,7 @@ Subject: ZEN: drm/amdgpu/pm: Allow override of min_power_limit with
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -2803,7 +2806,14 @@ static int smu_set_power_limit(void *han
|
@@ -2816,7 +2819,14 @@ static int smu_set_power_limit(void *han
|
||||||
if (smu->ppt_funcs->set_power_limit)
|
if (smu->ppt_funcs->set_power_limit)
|
||||||
return smu->ppt_funcs->set_power_limit(smu, limit_type, limit);
|
return smu->ppt_funcs->set_power_limit(smu, limit_type, limit);
|
||||||
|
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
From a31b09c511dd58e5032a3c941638207281b20ce4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steven Barrett <steven@liquorix.net>
|
||||||
|
Date: Sat, 14 Dec 2024 11:23:18 -0600
|
||||||
|
Subject: ZEN: kernel/Kconfig.preempt: Remove EXPERT conditional on PREEMPT_RT
|
||||||
|
|
||||||
|
Allow users to select PREEMPT_RT without requiring to configure all
|
||||||
|
items hidden by enabling CONFIG_EXPERT.
|
||||||
|
---
|
||||||
|
kernel/Kconfig.preempt | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/kernel/Kconfig.preempt
|
||||||
|
+++ b/kernel/Kconfig.preempt
|
||||||
|
@@ -69,7 +69,7 @@ config PREEMPT
|
||||||
|
|
||||||
|
config PREEMPT_RT
|
||||||
|
bool "Fully Preemptible Kernel (Real-Time)"
|
||||||
|
- depends on EXPERT && ARCH_SUPPORTS_RT
|
||||||
|
+ depends on ARCH_SUPPORTS_RT
|
||||||
|
select PREEMPTION
|
||||||
|
help
|
||||||
|
This option turns the kernel into a real-time kernel by replacing
|
36
debian/patches/series
vendored
36
debian/patches/series
vendored
@ -122,6 +122,7 @@ mixed-arch/0003-krd-adjust-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3.patch
|
|||||||
mixed-arch/0004-XANMOD-x86-build-Prevent-generating-avx2-and-avx512-.patch
|
mixed-arch/0004-XANMOD-x86-build-Prevent-generating-avx2-and-avx512-.patch
|
||||||
mixed-arch/0005-krd-adjust-KBUILD_CFLAGS-fno-tree-vectorize.patch
|
mixed-arch/0005-krd-adjust-KBUILD_CFLAGS-fno-tree-vectorize.patch
|
||||||
mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch
|
mixed-arch/0006-XANMOD-kbuild-Add-GCC-SMS-based-modulo-scheduling-fl.patch
|
||||||
|
mixed-arch/0007-PF-kbuild-6.12-adopt-proposed-upstream-change-for-gener.patch
|
||||||
|
|
||||||
misc-bbr3/0001-net-tcp_bbr-broaden-app-limited-rate-sample-detectio.patch
|
misc-bbr3/0001-net-tcp_bbr-broaden-app-limited-rate-sample-detectio.patch
|
||||||
misc-bbr3/0002-net-tcp_bbr-v2-shrink-delivered_mstamp-first_tx_msta.patch
|
misc-bbr3/0002-net-tcp_bbr-v2-shrink-delivered_mstamp-first_tx_msta.patch
|
||||||
@ -143,22 +144,24 @@ misc-bbr3/0017-net-tcp_bbr-v3-ensure-ECN-enabled-BBR-flows-set-ECT-.patch
|
|||||||
misc-bbr3/0018-tcp-export-TCPI_OPT_ECN_LOW-in-tcp_info-tcpi_options.patch
|
misc-bbr3/0018-tcp-export-TCPI_OPT_ECN_LOW-in-tcp_info-tcpi_options.patch
|
||||||
misc-bbr3/0019-x86-cfi-bpf-Add-tso_segs-and-skb_marked_lost-to-bpf_.patch
|
misc-bbr3/0019-x86-cfi-bpf-Add-tso_segs-and-skb_marked_lost-to-bpf_.patch
|
||||||
|
|
||||||
misc-ntsync5/0001-ntsync-Introduce-NTSYNC_IOC_WAIT_ANY.patch
|
misc-ntsync7/0001-ntsync-Return-the-fd-from-NTSYNC_IOC_CREATE_SEM.patch
|
||||||
misc-ntsync5/0002-ntsync-Introduce-NTSYNC_IOC_WAIT_ALL.patch
|
misc-ntsync7/0002-ntsync-Rename-NTSYNC_IOC_SEM_POST-to-NTSYNC_IOC_SEM_.patch
|
||||||
misc-ntsync5/0003-ntsync-Introduce-NTSYNC_IOC_CREATE_MUTEX.patch
|
misc-ntsync7/0003-ntsync-Introduce-NTSYNC_IOC_WAIT_ANY.patch
|
||||||
misc-ntsync5/0004-ntsync-Introduce-NTSYNC_IOC_MUTEX_UNLOCK.patch
|
misc-ntsync7/0004-ntsync-Introduce-NTSYNC_IOC_WAIT_ALL.patch
|
||||||
misc-ntsync5/0005-ntsync-Introduce-NTSYNC_IOC_MUTEX_KILL.patch
|
misc-ntsync7/0005-ntsync-Introduce-NTSYNC_IOC_CREATE_MUTEX.patch
|
||||||
misc-ntsync5/0006-ntsync-Introduce-NTSYNC_IOC_CREATE_EVENT.patch
|
misc-ntsync7/0006-ntsync-Introduce-NTSYNC_IOC_MUTEX_UNLOCK.patch
|
||||||
misc-ntsync5/0007-ntsync-Introduce-NTSYNC_IOC_EVENT_SET.patch
|
misc-ntsync7/0007-ntsync-Introduce-NTSYNC_IOC_MUTEX_KILL.patch
|
||||||
misc-ntsync5/0008-ntsync-Introduce-NTSYNC_IOC_EVENT_RESET.patch
|
misc-ntsync7/0008-ntsync-Introduce-NTSYNC_IOC_CREATE_EVENT.patch
|
||||||
misc-ntsync5/0009-ntsync-Introduce-NTSYNC_IOC_EVENT_PULSE.patch
|
misc-ntsync7/0009-ntsync-Introduce-NTSYNC_IOC_EVENT_SET.patch
|
||||||
misc-ntsync5/0010-ntsync-Introduce-NTSYNC_IOC_SEM_READ.patch
|
misc-ntsync7/0010-ntsync-Introduce-NTSYNC_IOC_EVENT_RESET.patch
|
||||||
misc-ntsync5/0011-ntsync-Introduce-NTSYNC_IOC_MUTEX_READ.patch
|
misc-ntsync7/0011-ntsync-Introduce-NTSYNC_IOC_EVENT_PULSE.patch
|
||||||
misc-ntsync5/0012-ntsync-Introduce-NTSYNC_IOC_EVENT_READ.patch
|
misc-ntsync7/0012-ntsync-Introduce-NTSYNC_IOC_SEM_READ.patch
|
||||||
misc-ntsync5/0013-ntsync-Introduce-alertable-waits.patch
|
misc-ntsync7/0013-ntsync-Introduce-NTSYNC_IOC_MUTEX_READ.patch
|
||||||
misc-ntsync5/0014-maintainers-Add-an-entry-for-ntsync.patch
|
misc-ntsync7/0014-ntsync-Introduce-NTSYNC_IOC_EVENT_READ.patch
|
||||||
misc-ntsync5/0015-docs-ntsync-Add-documentation-for-the-ntsync-uAPI.patch
|
misc-ntsync7/0015-ntsync-Introduce-alertable-waits.patch
|
||||||
misc-ntsync5/0016-Revert-misc-ntsync-mark-driver-as-broken-to-prevent-.patch
|
misc-ntsync7/0016-maintainers-Add-an-entry-for-ntsync.patch
|
||||||
|
misc-ntsync7/0017-docs-ntsync-Add-documentation-for-the-ntsync-uAPI.patch
|
||||||
|
misc-ntsync7/0018-ntsync-No-longer-depend-on-BROKEN.patch
|
||||||
|
|
||||||
misc-openwrt/0001-mac80211-ignore-AP-power-level-when-tx-power-type-is.patch
|
misc-openwrt/0001-mac80211-ignore-AP-power-level-when-tx-power-type-is.patch
|
||||||
|
|
||||||
@ -298,6 +301,7 @@ patchset-zen/sauce/0020-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.pat
|
|||||||
patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch
|
patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch
|
||||||
patchset-zen/sauce/0022-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch
|
patchset-zen/sauce/0022-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch
|
||||||
patchset-zen/sauce/0023-ZEN-ahci-Disable-staggered-spinup-by-default.patch
|
patchset-zen/sauce/0023-ZEN-ahci-Disable-staggered-spinup-by-default.patch
|
||||||
|
patchset-zen/sauce/0024-ZEN-kernel-Kconfig.preempt-Remove-EXPERT-conditional.patch
|
||||||
|
|
||||||
patchset-pf/fixes/0001-arch-Kconfig-Default-to-maximum-amount-of-ASLR-bits.patch
|
patchset-pf/fixes/0001-arch-Kconfig-Default-to-maximum-amount-of-ASLR-bits.patch
|
||||||
patchset-pf/fixes/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
|
patchset-pf/fixes/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch
|
||||||
|
393
debian/upstream/signing-key.asc
vendored
393
debian/upstream/signing-key.asc
vendored
@ -1,84 +1,6 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Comment: Ben Hutchings, E7BFC8EC95861109
|
|
||||||
|
|
||||||
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
|
|
||||||
0Kxj20YbAcPtwA==
|
|
||||||
=hzpE
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Comment: Greg Kroah-Hartman, 38DBBDC86092693E
|
|
||||||
|
|
||||||
mQINBE58tdUBEADY5iQsoL4k8l06dNt+uP2lH8IPi14M51/tOHsW1ZNc8Iok0stH
|
|
||||||
+uA8w0LpN97UgNhsvXFEkIK2JjLalasUTiUoIeeTshD9t+ekFBx5a9SbLCFlBrDS
|
+uA8w0LpN97UgNhsvXFEkIK2JjLalasUTiUoIeeTshD9t+ekFBx5a9SbLCFlBrDS
|
||||||
TwfieK2xalzomoL22N5ztj1XbdLWh6NRM6kKMeYvgAGo8p884WJk4pPIJK6G0wEw
|
TwfieK2xalzomoL22N5ztj1XbdLWh6NRM6kKMeYvgAGo8p884WJk4pPIJK6G0wEw
|
||||||
e9/TG6ilRSLOtxyaF9yZ+FC1eOA1S47Ld2K25Y5GsQF5agwi7nES+9tVVBZp97kB
|
e9/TG6ilRSLOtxyaF9yZ+FC1eOA1S47Ld2K25Y5GsQF5agwi7nES+9tVVBZp97kB
|
||||||
@ -89,8 +11,8 @@ WGqf8f9s5lSpH8D8OZLDOXKolqnBd5YrJr0Qmpq4cCcIqwNCMbURtsTpbW/EdWl+
|
|||||||
AKwnStXXLI5O6Hg+m4c3O8ZwbzcnAOgTJePm2Xoi71t9SbAZZx1/W7p6/57UGrXR
|
AKwnStXXLI5O6Hg+m4c3O8ZwbzcnAOgTJePm2Xoi71t9SbAZZx1/W7p6/57UGrXR
|
||||||
Q4WfiwpOPD0siF33yO2L7G7Gmm4zh8ieX8aS8guqfWFhuSsDta77F2FB9ozD9WN0
|
Q4WfiwpOPD0siF33yO2L7G7Gmm4zh8ieX8aS8guqfWFhuSsDta77F2FB9ozD9WN0
|
||||||
Z5tJowiy3Z1VkxvZjZH8IbcB05yBBBV47BJxrPnSuDT+w45yNTqZ6m4VYwARAQAB
|
Z5tJowiy3Z1VkxvZjZH8IbcB05yBBBV47BJxrPnSuDT+w45yNTqZ6m4VYwARAQAB
|
||||||
tE1HcmVnIEtyb2FoLUhhcnRtYW4gKExpbnV4IGtlcm5lbCBzdGFibGUgcmVsZWFz
|
zU1HcmVnIEtyb2FoLUhhcnRtYW4gKExpbnV4IGtlcm5lbCBzdGFibGUgcmVsZWFz
|
||||||
ZSBzaWduaW5nIGtleSkgPGdyZWdAa3JvYWguY29tPokCOAQTAQIAIgUCTny11QIb
|
ZSBzaWduaW5nIGtleSkgPGdyZWdAa3JvYWguY29tPsLBeAQTAQIAIgUCTny11QIb
|
||||||
AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQONu9yGCSaT5fXBAAx2NfTb1I
|
AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQONu9yGCSaT5fXBAAx2NfTb1I
|
||||||
Z59eV3PKtqNG0qwQdq/62oSqNKlvlp/JzkeynjeJ7ic1IOs/CTTv2+xoPkLNcNhO
|
Z59eV3PKtqNG0qwQdq/62oSqNKlvlp/JzkeynjeJ7ic1IOs/CTTv2+xoPkLNcNhO
|
||||||
Pz7uem/4aa/my9A0AEp5UsF6Lvdo/Hy7Jxc++0EgW//TyvWcU9qd5qS/85VZf8I5
|
Pz7uem/4aa/my9A0AEp5UsF6Lvdo/Hy7Jxc++0EgW//TyvWcU9qd5qS/85VZf8I5
|
||||||
@ -102,7 +24,7 @@ EDl7JkByXVKJiVVihDuEe5JZXkoIO/eTN6uceF89ZQiO/dFn0Kcqc4vL7uuI6FDM
|
|||||||
RZK7mY7bjFxFW1VjspcxhT1NdR7SFNrK8Glzd5FS67oTwSNB3CzkJ3ON/kOJ8JSx
|
RZK7mY7bjFxFW1VjspcxhT1NdR7SFNrK8Glzd5FS67oTwSNB3CzkJ3ON/kOJ8JSx
|
||||||
FEt1ZTc2ZpQujrFyTtbksWm3Yy63kbpwxRoR6xgaGwtx0SdkkWDCcA+2GZymCjk5
|
FEt1ZTc2ZpQujrFyTtbksWm3Yy63kbpwxRoR6xgaGwtx0SdkkWDCcA+2GZymCjk5
|
||||||
FFQkAhoEk0tu/n5fvHS7TTZui9a2HMsyqmgTJzeU0eQJDgmb/ahzW0VgjHtABaJr
|
FFQkAhoEk0tu/n5fvHS7TTZui9a2HMsyqmgTJzeU0eQJDgmb/ahzW0VgjHtABaJr
|
||||||
40Q83M9upkZdHFXSZb7UHFYkAdH1OxdvSFW5Ag0ETny11QEQALIiIb/niWy6M6Gf
|
40Q83M9upkZdHFXSZb7UHFYkAdH1OxdvSFXOwU0ETny11QEQALIiIb/niWy6M6Gf
|
||||||
BMt/2EBWpLuE+FYVeUQGpGhXD2rUhOo9UpoxBD/Y5mc5OaJsVL3fySYQldVFOaT7
|
BMt/2EBWpLuE+FYVeUQGpGhXD2rUhOo9UpoxBD/Y5mc5OaJsVL3fySYQldVFOaT7
|
||||||
Pu0J1N5FXIBckgtbT3eg+TGD9WIfJy6ZpWjBKf6K4frwTwRpLBKqZhcA/78KzxFH
|
Pu0J1N5FXIBckgtbT3eg+TGD9WIfJy6ZpWjBKf6K4frwTwRpLBKqZhcA/78KzxFH
|
||||||
eRHjV4cEVZVNoRtVqLYuTlbdlkH6G2YxgCioxAfqvsGjsg2ES7Xl6xz3uaBH1DFX
|
eRHjV4cEVZVNoRtVqLYuTlbdlkH6G2YxgCioxAfqvsGjsg2ES7Xl6xz3uaBH1DFX
|
||||||
@ -113,7 +35,7 @@ moxfqt6OGig59cYv7PSMfHX25dV01Ns+2R1eo7qiktkV+3CSSs/dUArcTxyovuad
|
|||||||
IAUaZAJ3XqsS3FGzZsPYMYNM9faZqOfF6mmGmCZRJMMESWuWjc8ZnVAv4luyD18v
|
IAUaZAJ3XqsS3FGzZsPYMYNM9faZqOfF6mmGmCZRJMMESWuWjc8ZnVAv4luyD18v
|
||||||
lsr/J9rO0t28s4PJyqJGozEXLBLtsaCVihxBHMY7QK/pC0jRniLpeniDDHY875TI
|
lsr/J9rO0t28s4PJyqJGozEXLBLtsaCVihxBHMY7QK/pC0jRniLpeniDDHY875TI
|
||||||
iG3nrmtR84nnW9WNOG6tuaIcB6hD/DmSr72rRoNEpCa/eT7XiCOymGHS5gWR+94R
|
iG3nrmtR84nnW9WNOG6tuaIcB6hD/DmSr72rRoNEpCa/eT7XiCOymGHS5gWR+94R
|
||||||
1+J1rQZbd1T8gSq/nQQluJII7oz7ABEBAAGJAh8EGAECAAkFAk58tdUCGwwACgkQ
|
1+J1rQZbd1T8gSq/nQQluJII7oz7ABEBAAHCwV8EGAECAAkFAk58tdUCGwwACgkQ
|
||||||
ONu9yGCSaT4wUxAAvup1iyrlHcch2RHfxpmFRBYNOwtmpExJBy+KUzDZ6RjMTTHF
|
ONu9yGCSaT4wUxAAvup1iyrlHcch2RHfxpmFRBYNOwtmpExJBy+KUzDZ6RjMTTHF
|
||||||
bw3YrkkXA1cMQobF2vTxnNZs5B2I3u2sp/AD1MeFxD/Me5tebZcjJTBH8DBfKMRw
|
bw3YrkkXA1cMQobF2vTxnNZs5B2I3u2sp/AD1MeFxD/Me5tebZcjJTBH8DBfKMRw
|
||||||
FwX3fbH4X7McLD6XYMIEz7Vo0e3sTzCVqZM27NmPZrhWHj05LQIliLeUuyX54vYw
|
FwX3fbH4X7McLD6XYMIEz7Vo0e3sTzCVqZM27NmPZrhWHj05LQIliLeUuyX54vYw
|
||||||
@ -124,126 +46,187 @@ gxQ2aZ13cdaFtHTzAOnnYJNEjXS0ClEyxIXXnoLnwjcuLcTTVb3kNH7LAoR/x1Jm
|
|||||||
bR1onhIOB/RwFJcUT3/mlJFtXUacGCSSCpCtL0HewU0Yr0uL5Nx51i7pNG4acIJN
|
bR1onhIOB/RwFJcUT3/mlJFtXUacGCSSCpCtL0HewU0Yr0uL5Nx51i7pNG4acIJN
|
||||||
teKz1PMyaYZLETVY/euNZ1A/zyaNKs7Y/SCba5q4yOmDc/skSKUQfP7yQ8KiU6tU
|
teKz1PMyaYZLETVY/euNZ1A/zyaNKs7Y/SCba5q4yOmDc/skSKUQfP7yQ8KiU6tU
|
||||||
meWAafqUuNI946M0RRsKnxmc4guWXyvUWwdrp+AAYfzckZU4gGIRVWKSvG6CTKDs
|
meWAafqUuNI946M0RRsKnxmc4guWXyvUWwdrp+AAYfzckZU4gGIRVWKSvG6CTKDs
|
||||||
0HtZ5W1cA3+lrcur6HpKyzk57uGORqWOFquQERMs0oXdHKc5w55soziCllQ=
|
0HtZ5W1cA3+lrcur6HpKyzk57uGORqWOFquQERMs0oXdHKc5w55soziCllTGwE0E
|
||||||
=DPn8
|
TnkIkgEIAKSf5o4uaxqrV6NRxcIA5eQ7fDt6IuqNH/OJMvYpnfSntvE/xxNRe98z
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
t/ATsSeoIKSOLbnHbGygpcHwCVSzAgRhQUI66mPYE6xWYn+splbt8K8pM4r4GC4q
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
N5sPE1uCaJ/f1t9KccNatbzfZ/ketiZmftr9XJINAV26XwaX9HqCzo8cluCOO34r
|
||||||
Comment: Linus Torvalds, 79BE3E4300411886
|
s/HpxBUxU29j9UFZ28DXNyQ7/iHqB/eRZZk35aWrzC/+nF+3xDM0WDB4f2jluPi2
|
||||||
|
dD7AwIsIuIOyAS5VrCg4CSDd1Ey6AhSiIqgErDtvbWr1WOniN7NG9yILpiziQZRI
|
||||||
mQENBE55CJIBCACkn+aOLmsaq1ejUcXCAOXkO3w7eiLqjR/ziTL2KZ30p7bxP8cT
|
UbVmMifcyljd/fFnfK5jCvFDwlwDspMAEQEAAc0uTGludXMgVG9ydmFsZHMgPHRv
|
||||||
UXvfM7fwE7EnqCCkji25x2xsoKXB8AlUswIEYUFCOupj2BOsVmJ/rKZW7fCvKTOK
|
cnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPsLAeAQTAQIAIgUCTnkIkgIbAwYL
|
||||||
+BguKjebDxNbgmif39bfSnHDWrW832f5HrYmZn7a/VySDQFdul8Gl/R6gs6PHJbg
|
CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQeb4+QwBBGIZunAf/aMw3IGrpKMWu
|
||||||
jjt+K7Px6cQVMVNvY/VBWdvA1zckO/4h6gf3kWWZN+Wlq8wv/pxft8QzNFgweH9o
|
W0TC3pzA4lqTWWSOk/kh8Ux6Z8o8fTeMG/3xhvuedUT9Wh9FCLR6s+/NT0c+K3Oa
|
||||||
5bj4tnQ+wMCLCLiDsgEuVawoOAkg3dRMugIUoiKoBKw7b21q9Vjp4jezRvciC6Ys
|
r0d1rPylNUPWc2J6OfowEdERjlPXRTwn0eiWf1LUbcJS8RRoGD5gSEfBYDyGHEUI
|
||||||
4kGUSFG1ZjIn3MpY3f3xZ3yuYwrxQ8JcA7KTABEBAAG0LkxpbnVzIFRvcnZhbGRz
|
hFx/Po09GRkfnOL3F1cGeMusTcKmhnBWC7AJP/bkO5Kqome+IqIf4E68mL8GcdKe
|
||||||
IDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz6JATgEEwECACIFAk55CJIC
|
NXUnvUw6lVptpNkrFDVCTCLKjspFr8ysFXgLDzsyMXWOaNr3XBY064DC/VJP5pJo
|
||||||
GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHm+PkMAQRiGbpwH/2jMNyBq
|
jTfzNyVWpsWtz2AeRN4/ejmnwMbdDsDWkT/JUtFRb7eO5wq2KiPKVZqrFfsUPRFm
|
||||||
6SjFrltEwt6cwOJak1lkjpP5IfFMemfKPH03jBv98Yb7nnVE/VofRQi0erPvzU9H
|
0i6E2xSKD87ATQROeQiSAQgA37JuAPQiWApE8nd6Sxp934o5Gx4FbDFTLcYfTICD
|
||||||
Pitzmq9Hdaz8pTVD1nNiejn6MBHREY5T10U8J9Holn9S1G3CUvEUaBg+YEhHwWA8
|
/iNkKx8dnuOltErPE1MpbWQToKVKp6FSy5dPlVzV6HrTv16s3fL4k3GXrNk8L2/7
|
||||||
hhxFCIRcfz6NPRkZH5zi9xdXBnjLrE3CpoZwVguwCT/25DuSqqJnviKiH+BOvJi/
|
kY3JzbypJ816O3jCbBr/LzpPuhB+Cjvujwa79o7/HM6PDuNIMNHe72n+EVW2yrOm
|
||||||
BnHSnjV1J71MOpVabaTZKxQ1Qkwiyo7KRa/MrBV4Cw87MjF1jmja91wWNOuAwv1S
|
3FnO+zeFVqItL7SZqv2phmF5oJSo5c4pWjfxWDmCQ6EwTAq9mz3Hd8g1T+3xyTE4
|
||||||
T+aSaI038zclVqbFrc9gHkTeP3o5p8DG3Q7A1pE/yVLRUW+3jucKtiojylWaqxX7
|
eroqItqnkGrztc/RkmwJowHB0tiE4XECIRW2XPDKjcO8ymUhqGqo0QtvvVgOGkyr
|
||||||
FD0RZtIuhNsUig+5AQ0ETnkIkgEIAN+ybgD0IlgKRPJ3eksafd+KORseBWwxUy3G
|
8e77jahHemoBII8t87/QZRJ0AZclWG/svueDTYRNIGZU5QARAQABwsBfBBgBAgAJ
|
||||||
H0yAg/4jZCsfHZ7jpbRKzxNTKW1kE6ClSqehUsuXT5Vc1eh6079erN3y+JNxl6zZ
|
BQJOeQiSAhsMAAoJEHm+PkMAQRiG6hsH/0WLUZUbmqc+rXhLRYpgRbc3z3Uvfstp
|
||||||
PC9v+5GNyc28qSfNejt4wmwa/y86T7oQfgo77o8Gu/aO/xzOjw7jSDDR3u9p/hFV
|
eYOH3vuv+PZ3Jk6hgiJXivHprq6uGr1RtyA3D+R7TVM0zjLsSFb+UWfElBdIyN2x
|
||||||
tsqzptxZzvs3hVaiLS+0mar9qYZheaCUqOXOKVo38Vg5gkOhMEwKvZs9x3fINU/t
|
cZxv0fBR68OTYUxXWH2CQcuWpFSVOmNV1DBMH3Ax3htaFmzHJtOcaHqjx0LAERoY
|
||||||
8ckxOHq6KiLap5Bq87XP0ZJsCaMBwdLYhOFxAiEVtlzwyo3DvMplIahqqNELb71Y
|
2wexIFg7zU5etMT99xkSAoJ4pbbF0pGJrO7oy7lYtTqAHLac5zqgvbMolmMAJ+WV
|
||||||
DhpMq/Hu+42oR3pqASCPLfO/0GUSdAGXJVhv7L7ng02ETSBmVOUAEQEAAYkBHwQY
|
DMHHn7rPY3hKPQkE6hvPhFHYksSUwRyQxt2pshL5z6fTYi0yYI5GBqR/viT5MRtp
|
||||||
AQIACQUCTnkIkgIbDAAKCRB5vj5DAEEYhuobB/9Fi1GVG5qnPq14S0WKYEW3N891
|
nHdlNUeeG+pCpqdnPWLgjkjAcnGRSxgt12BivKVkf4zA0OUHm7cjXfzGwU0ESlmh
|
||||||
L37LaXmDh977r/j2dyZOoYIiV4rx6a6urhq9UbcgNw/ke01TNM4y7EhW/lFnxJQX
|
TAEQANao2fb9O9wk7YvKMYmMxDpUbzpFN9d19iDfVjZSeSwqbzUC/4x1oXft8hBR
|
||||||
SMjdsXGcb9HwUevDk2FMV1h9gkHLlqRUlTpjVdQwTB9wMd4bWhZsxybTnGh6o8dC
|
4CYGlahGycov3qPQboSU1nxOnVJ+NaIDJYUT47pbN0Nf25pzNv5IVczm3BBuPAFh
|
||||||
wBEaGNsHsSBYO81OXrTE/fcZEgKCeKW2xdKRiazu6Mu5WLU6gBy2nOc6oL2zKJZj
|
sJqIe6FXuJ/Pfe494lSg5ypCY0WdlYL0RsRrNe1uqdTV5Bwo4tQLuQ79oqVULGvf
|
||||||
ACfllQzBx5+6z2N4Sj0JBOobz4RR2JLElMEckMbdqbIS+c+n02ItMmCORgakf74k
|
IKFDona5o4o0YmoVdv/htRR1RKqty0Zu+u5QJiwQGTRVTSHRUqmS8ePDYLasFJ0n
|
||||||
+TEbaZx3ZTVHnhvqQqanZz1i4I5IwHJxkUsYLddgYrylZH+MwNDlB5u3I138
|
iUDJePtcwHkBghjtom+55keT1aR62EDhfL3QLBhL7d+5AWTVgkulpD2FPfAylFgf
|
||||||
=HEgY
|
sO7X6gorJJqSHyv2LrH04A8RV8eJ3K82TIKVRViFQFcMXBNVd4OjlwWpnBDfnJoV
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
uGmH45TSswwYsIZ4aiaZnkyLCSLOisW99a+fuaWhQ1XWLpjUkt+DVLQGESI951xs
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
SVOyeGDlMoMx5BSa/a4+NaqJWaE5POHKcdko9jc8awPG+dLwfazByZu8pUAxVAVK
|
||||||
Comment: Sasha Levin, DEA66FF797772CDC
|
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
|
NlNsaAqPmeBOQbNyKY2IhV3vLegqZb65wE0nxHtRva5DyIsibs0U1W1VtfsU68uz
|
||||||
/Kxtr7LrVs8gsmz9k5+PiFn0E0lJDcLlFGVbqfHZ861DPADFbIVHeVPS9Fq1SFT5
|
6a6XzwXM/ngB2ThIPzjhGN6BUwOfdNW36mO2ua0WiaR9uObp0gNlVZGcwaGI1vXW
|
||||||
sFM7D3v+vL57ctJQuLxzdsq6P/ms02udsnbb/iwXafCT2aW0KVNhc2hhIExldmlu
|
BN+4RY6I7/FEiIB5ncwBaWfW+ZY3HOnJirmOmhPrvVf4jhUqHQI4tLyr/ZCsijDW
|
||||||
IDxhbGV4YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+iQI4BBMBAgAiBQJXm64BAhsD
|
nyaBE3lvsLPUMifXPzFwsmze6e9Geq8J5tC5flW0nGEvv8uCoxHOyCqCHp/z9RJZ
|
||||||
BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDepm/3l3cs3AzeD/9+bzdB2wPS
|
uo6hstP5+ggQxYmNCH6ODYOMTC2SHXRYPnGnMI3QNjZMzsFNBEpZoakBEACZUeVh
|
||||||
Hf+M4uvsMweGA8Yph1PkeIbcYc38u4PmpBCgkQmkKsJCI0RA59CAw9shNh6GTRDz
|
uZF8eDcpr7cpcev2gID8bCvtd7UH0GgiI3/sHfixcNkRk/SxMrJSmMtIQu/faqYw
|
||||||
7Ln9DLZXfzKpjvHhqHo9GSUfcIdUjwIjOoq4gXsr9ho/DuS7PsfFQNqMlLz20tkg
|
QsuLo2WT9rW2Pw/uxovv9UvFKg4n2huTP2JJHplNhlp2QppTy5HKw4bZDn7DJ2Iy
|
||||||
9vczGOYSkh1JsSHDS59kbTsUTyrQb1gzMHoAF+FixaucUKh97pvL6hOfGWmrsdtX
|
zmSZ9DfUbkwy3laTR11v6anT/dydwJy4bM234vnurlGqInmH+Em1PPSM8xMeKW0w
|
||||||
eAZMvEXnhefvBBc1t/arXmGtDA1oh2gJ6ve97ZUbW59KPp6jkohQPAqqgQu3WOC0
|
ismhfoqS9yZ8qbl0BRf5LEG7/xFo/JrM70RZkW+Sethz2gkyexicp9uWmQuSal2W
|
||||||
Kckr0nfZooB01QnIwEG/lacIqn6JSSeGB75fbFTC+bUzZWp1z5CGOA5RRxiEwYgr
|
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
|
||||||
=oyHM
|
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
|
||||||
|
=mAKs
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
Loading…
Reference in New Issue
Block a user