release 6.12.4 (preliminary)
This commit is contained in:
@@ -135,7 +135,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
spin_unlock(&sem->lock);
|
||||
|
||||
@@ -141,6 +193,7 @@ static struct ntsync_obj *ntsync_alloc_o
|
||||
@@ -140,6 +192,7 @@ static struct ntsync_obj *ntsync_alloc_o
|
||||
obj->dev = dev;
|
||||
get_file(dev->file);
|
||||
spin_lock_init(&obj->lock);
|
||||
@@ -143,7 +143,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
return obj;
|
||||
}
|
||||
@@ -191,6 +244,196 @@ static int ntsync_create_sem(struct ntsy
|
||||
@@ -190,6 +243,196 @@ static int ntsync_create_sem(struct ntsy
|
||||
return put_user(fd, &user_args->sem);
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
static int ntsync_char_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct ntsync_device *dev;
|
||||
@@ -222,6 +465,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
@@ -221,6 +464,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
switch (cmd) {
|
||||
case NTSYNC_IOC_CREATE_SEM:
|
||||
return ntsync_create_sem(dev, argp);
|
||||
|
@@ -322,7 +322,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
if (!ret && put_user(prev_count, user_args))
|
||||
ret = -EFAULT;
|
||||
@@ -194,6 +403,8 @@ static struct ntsync_obj *ntsync_alloc_o
|
||||
@@ -193,6 +402,8 @@ static struct ntsync_obj *ntsync_alloc_o
|
||||
get_file(dev->file);
|
||||
spin_lock_init(&obj->lock);
|
||||
INIT_LIST_HEAD(&obj->any_waiters);
|
||||
@@ -331,7 +331,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
return obj;
|
||||
}
|
||||
@@ -305,7 +516,7 @@ static int ntsync_schedule(const struct
|
||||
@@ -304,7 +515,7 @@ static int ntsync_schedule(const struct
|
||||
* Allocate and initialize the ntsync_q structure, but do not queue us yet.
|
||||
*/
|
||||
static int setup_wait(struct ntsync_device *dev,
|
||||
@@ -340,7 +340,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
struct ntsync_q **ret_q)
|
||||
{
|
||||
const __u32 count = args->count;
|
||||
@@ -328,6 +539,7 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -327,6 +538,7 @@ static int setup_wait(struct ntsync_devi
|
||||
return -ENOMEM;
|
||||
q->task = current;
|
||||
atomic_set(&q->signaled, -1);
|
||||
@@ -348,7 +348,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
q->count = count;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
@@ -337,6 +549,16 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -336,6 +548,16 @@ static int setup_wait(struct ntsync_devi
|
||||
if (!obj)
|
||||
goto err;
|
||||
|
||||
@@ -365,7 +365,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
entry->obj = obj;
|
||||
entry->q = q;
|
||||
entry->index = i;
|
||||
@@ -366,13 +588,14 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -365,13 +587,14 @@ static int ntsync_wait_any(struct ntsync
|
||||
struct ntsync_wait_args args;
|
||||
struct ntsync_q *q;
|
||||
int signaled;
|
||||
@@ -381,7 +381,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -382,9 +605,9 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -381,9 +604,9 @@ static int ntsync_wait_any(struct ntsync
|
||||
struct ntsync_q_entry *entry = &q->entries[i];
|
||||
struct ntsync_obj *obj = entry->obj;
|
||||
|
||||
@@ -393,7 +393,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
}
|
||||
|
||||
/* check if we are already signaled */
|
||||
@@ -395,9 +618,9 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -394,9 +617,9 @@ static int ntsync_wait_any(struct ntsync
|
||||
if (atomic_read(&q->signaled) != -1)
|
||||
break;
|
||||
|
||||
@@ -405,7 +405,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
}
|
||||
|
||||
/* sleep */
|
||||
@@ -410,13 +633,94 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -409,13 +632,94 @@ static int ntsync_wait_any(struct ntsync
|
||||
struct ntsync_q_entry *entry = &q->entries[i];
|
||||
struct ntsync_obj *obj = entry->obj;
|
||||
|
||||
@@ -502,7 +502,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
signaled = atomic_read(&q->signaled);
|
||||
if (signaled != -1) {
|
||||
struct ntsync_wait_args __user *user_args = argp;
|
||||
@@ -442,6 +746,8 @@ static int ntsync_char_open(struct inode
|
||||
@@ -441,6 +745,8 @@ static int ntsync_char_open(struct inode
|
||||
if (!dev)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -511,7 +511,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
file->private_data = dev;
|
||||
dev->file = file;
|
||||
return nonseekable_open(inode, file);
|
||||
@@ -465,6 +771,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
@@ -464,6 +770,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
switch (cmd) {
|
||||
case NTSYNC_IOC_CREATE_SEM:
|
||||
return ntsync_create_sem(dev, argp);
|
||||
|
@@ -121,7 +121,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
/*
|
||||
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||
* invalid.
|
||||
@@ -455,6 +493,33 @@ static int ntsync_create_sem(struct ntsy
|
||||
@@ -454,6 +492,33 @@ static int ntsync_create_sem(struct ntsy
|
||||
return put_user(fd, &user_args->sem);
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
||||
{
|
||||
struct file *file = fget(fd);
|
||||
@@ -524,7 +589,7 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -523,7 +588,7 @@ static int setup_wait(struct ntsync_devi
|
||||
struct ntsync_q *q;
|
||||
__u32 i, j;
|
||||
|
||||
@@ -164,7 +164,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
return -EINVAL;
|
||||
|
||||
if (args->count > NTSYNC_MAX_WAIT_COUNT)
|
||||
@@ -538,6 +603,7 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -537,6 +602,7 @@ static int setup_wait(struct ntsync_devi
|
||||
if (!q)
|
||||
return -ENOMEM;
|
||||
q->task = current;
|
||||
@@ -172,7 +172,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
atomic_set(&q->signaled, -1);
|
||||
q->all = all;
|
||||
q->count = count;
|
||||
@@ -580,6 +646,9 @@ static void try_wake_any_obj(struct ntsy
|
||||
@@ -579,6 +645,9 @@ static void try_wake_any_obj(struct ntsy
|
||||
case NTSYNC_TYPE_SEM:
|
||||
try_wake_any_sem(obj);
|
||||
break;
|
||||
@@ -182,7 +182,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -769,6 +838,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
@@ -768,6 +837,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
void __user *argp = (void __user *)parm;
|
||||
|
||||
switch (cmd) {
|
||||
|
@@ -119,7 +119,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
default:
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
@@ -659,6 +715,7 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -658,6 +714,7 @@ static int setup_wait(struct ntsync_devi
|
||||
q->owner = args->owner;
|
||||
atomic_set(&q->signaled, -1);
|
||||
q->all = all;
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
q->count = count;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
@@ -767,7 +824,7 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -766,7 +823,7 @@ static int ntsync_wait_any(struct ntsync
|
||||
struct ntsync_wait_args __user *user_args = argp;
|
||||
|
||||
/* 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))
|
||||
ret = -EFAULT;
|
||||
@@ -848,7 +905,7 @@ static int ntsync_wait_all(struct ntsync
|
||||
@@ -847,7 +904,7 @@ static int ntsync_wait_all(struct ntsync
|
||||
struct ntsync_wait_args __user *user_args = argp;
|
||||
|
||||
/* even if we caught a signal, we need to communicate success */
|
||||
|
@@ -91,7 +91,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
/*
|
||||
* Actually change the semaphore state, returning -EOVERFLOW if it is made
|
||||
* invalid.
|
||||
@@ -629,6 +662,30 @@ static int ntsync_create_mutex(struct nt
|
||||
@@ -628,6 +661,30 @@ static int ntsync_create_mutex(struct nt
|
||||
return put_user(fd, &user_args->mutex);
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
|
||||
{
|
||||
struct file *file = fget(fd);
|
||||
@@ -759,6 +816,9 @@ static void try_wake_any_obj(struct ntsy
|
||||
@@ -758,6 +815,9 @@ static void try_wake_any_obj(struct ntsy
|
||||
case NTSYNC_TYPE_MUTEX:
|
||||
try_wake_any_mutex(obj);
|
||||
break;
|
||||
@@ -132,7 +132,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -948,6 +1008,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
@@ -947,6 +1007,8 @@ static long ntsync_char_ioctl(struct fil
|
||||
void __user *argp = (void __user *)parm;
|
||||
|
||||
switch (cmd) {
|
||||
|
@@ -21,7 +21,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
--- a/drivers/misc/ntsync.c
|
||||
+++ b/drivers/misc/ntsync.c
|
||||
@@ -885,22 +885,29 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -884,22 +884,29 @@ static int setup_wait(struct ntsync_devi
|
||||
const struct ntsync_wait_args *args, bool all,
|
||||
struct ntsync_q **ret_q)
|
||||
{
|
||||
@@ -54,7 +54,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
if (!q)
|
||||
return -ENOMEM;
|
||||
q->task = current;
|
||||
@@ -910,7 +917,7 @@ static int setup_wait(struct ntsync_devi
|
||||
@@ -909,7 +916,7 @@ static int setup_wait(struct ntsync_devi
|
||||
q->ownerdead = false;
|
||||
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_obj *obj = get_obj(dev, fds[i]);
|
||||
|
||||
@@ -960,10 +967,10 @@ static void try_wake_any_obj(struct ntsy
|
||||
@@ -959,10 +966,10 @@ static void try_wake_any_obj(struct ntsy
|
||||
static int ntsync_wait_any(struct ntsync_device *dev, void __user *argp)
|
||||
{
|
||||
struct ntsync_wait_args args;
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
int ret;
|
||||
|
||||
if (copy_from_user(&args, argp, sizeof(args)))
|
||||
@@ -973,9 +980,13 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -972,9 +979,13 @@ static int ntsync_wait_any(struct ntsync
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@@ -90,7 +90,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
struct ntsync_q_entry *entry = &q->entries[i];
|
||||
struct ntsync_obj *obj = entry->obj;
|
||||
|
||||
@@ -984,9 +995,15 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -983,9 +994,15 @@ static int ntsync_wait_any(struct ntsync
|
||||
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;
|
||||
|
||||
if (atomic_read(&q->signaled) != -1)
|
||||
@@ -1003,7 +1020,7 @@ static int ntsync_wait_any(struct ntsync
|
||||
@@ -1002,7 +1019,7 @@ static int ntsync_wait_any(struct ntsync
|
||||
|
||||
/* 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_obj *obj = entry->obj;
|
||||
|
||||
@@ -1063,6 +1080,14 @@ static int ntsync_wait_all(struct ntsync
|
||||
@@ -1062,6 +1079,14 @@ static int ntsync_wait_all(struct ntsync
|
||||
*/
|
||||
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 */
|
||||
|
||||
@@ -1070,6 +1095,21 @@ static int ntsync_wait_all(struct ntsync
|
||||
@@ -1069,6 +1094,21 @@ static int ntsync_wait_all(struct ntsync
|
||||
|
||||
mutex_unlock(&dev->wait_all_lock);
|
||||
|
||||
@@ -154,7 +154,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
/* sleep */
|
||||
|
||||
ret = ntsync_schedule(q, &args);
|
||||
@@ -1095,6 +1135,18 @@ static int ntsync_wait_all(struct ntsync
|
||||
@@ -1094,6 +1134,18 @@ static int ntsync_wait_all(struct ntsync
|
||||
|
||||
mutex_unlock(&dev->wait_all_lock);
|
||||
|
||||
|
@@ -12,7 +12,7 @@ Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -16319,6 +16319,15 @@ T: git https://github.com/Paragon-Softwa
|
||||
@@ -16486,6 +16486,15 @@ T: git https://github.com/Paragon-Softwa
|
||||
F: Documentation/filesystems/ntfs3.rst
|
||||
F: fs/ntfs3/
|
||||
|
||||
|
@@ -11,7 +11,7 @@ This reverts commit f5b335dc025cfee90957efa90dc72fada0d5abb4.
|
||||
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -507,7 +507,6 @@ config OPEN_DICE
|
||||
@@ -517,7 +517,6 @@ config OPEN_DICE
|
||||
|
||||
config NTSYNC
|
||||
tristate "NT synchronization primitive emulation"
|
||||
|
Reference in New Issue
Block a user