Linux 5.9-rc1
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAl85kWkeHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGGPwIAJpEmEBkMoQ+KARK PaaVDQW9fwAlC1nThMpGv/m8Ym7KbfLkTgEJQiQyNv3pDDhyLP8jvcZcscIkfs4s 56IMjFndRHWNeCVu9YPXWmAEp/WycZNC7YVPu0j1bI9VgvaHvbHOqUWzxB716RbY K4TFprJEA3sotNm0vdda2NgSlSup/0NVKiP2LwQPjkwH+Kf6/Ol1j2uxbWywEo75 BdW5LreDtUoJ7W5BeX8GJ0IVgWdyxBV61eVbaINNY3EOPc7+uMGOgR9oHeGWRceH V4ELYww5yjizUDtKFvVTc/k0tj+Rq73mtOADdaF0YWItqxtDBvAcdKIpC0KYzVaa 2fB+rts= =9Pnj -----END PGP SIGNATURE----- Merge 5.9-rc1 into android-mainline Linux 5.9-rc1 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I1cfd3565631a1fa0d0411d93d4131ed92ec4ff23
This commit is contained in:
commit
2a3286f860
4
Makefile
4
Makefile
@ -1,8 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 8
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION =
|
||||
EXTRAVERSION = -rc1
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include <asm/cache.h>
|
||||
|
||||
#define __HAVE_ARCH_PMD_ALLOC_ONE
|
||||
#define __HAVE_ARCH_PMD_FREE
|
||||
#define __HAVE_ARCH_PGD_FREE
|
||||
#include <asm-generic/pgalloc.h>
|
||||
@ -67,6 +68,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
|
||||
(__u32)(__pa((unsigned long)pmd) >> PxD_VALUE_SHIFT)));
|
||||
}
|
||||
|
||||
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
|
||||
{
|
||||
return (pmd_t *)__get_free_pages(GFP_PGTABLE_KERNEL, PMD_ORDER);
|
||||
}
|
||||
|
||||
static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
|
||||
{
|
||||
if (pmd_flag(*pmd) & PxD_FLAG_ATTACHED) {
|
||||
|
539
fs/io_uring.c
539
fs/io_uring.c
File diff suppressed because it is too large
Load Diff
@ -3346,7 +3346,7 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
|
||||
if (flags & RWF_NOWAIT) {
|
||||
if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
|
||||
return -EOPNOTSUPP;
|
||||
kiocb_flags |= IOCB_NOWAIT;
|
||||
kiocb_flags |= IOCB_NOWAIT | IOCB_NOIO;
|
||||
}
|
||||
if (flags & RWF_HIPRI)
|
||||
kiocb_flags |= IOCB_HIPRI;
|
||||
|
@ -2542,7 +2542,21 @@ bool get_signal(struct ksignal *ksig)
|
||||
|
||||
relock:
|
||||
spin_lock_irq(&sighand->siglock);
|
||||
current->jobctl &= ~JOBCTL_TASK_WORK;
|
||||
/*
|
||||
* Make sure we can safely read ->jobctl() in task_work add. As Oleg
|
||||
* states:
|
||||
*
|
||||
* It pairs with mb (implied by cmpxchg) before READ_ONCE. So we
|
||||
* roughly have
|
||||
*
|
||||
* task_work_add: get_signal:
|
||||
* STORE(task->task_works, new_work); STORE(task->jobctl);
|
||||
* mb(); mb();
|
||||
* LOAD(task->jobctl); LOAD(task->task_works);
|
||||
*
|
||||
* and we can rely on STORE-MB-LOAD [ in task_work_add].
|
||||
*/
|
||||
smp_store_mb(current->jobctl, current->jobctl & ~JOBCTL_TASK_WORK);
|
||||
if (unlikely(current->task_works)) {
|
||||
spin_unlock_irq(&sighand->siglock);
|
||||
task_work_run();
|
||||
|
@ -42,7 +42,13 @@ task_work_add(struct task_struct *task, struct callback_head *work, int notify)
|
||||
set_notify_resume(task);
|
||||
break;
|
||||
case TWA_SIGNAL:
|
||||
if (lock_task_sighand(task, &flags)) {
|
||||
/*
|
||||
* Only grab the sighand lock if we don't already have some
|
||||
* task_work pending. This pairs with the smp_store_mb()
|
||||
* in get_signal(), see comment there.
|
||||
*/
|
||||
if (!(READ_ONCE(task->jobctl) & JOBCTL_TASK_WORK) &&
|
||||
lock_task_sighand(task, &flags)) {
|
||||
task->jobctl |= JOBCTL_TASK_WORK;
|
||||
signal_wake_up(task, 0);
|
||||
unlock_task_sighand(task, &flags);
|
||||
|
Loading…
Reference in New Issue
Block a user