Merge tag 'task_work-2021-01-19' of git://git.kernel.dk/linux-block
Pull task_work fix from Jens Axboe: "The TIF_NOTIFY_SIGNAL change inadvertently removed the unconditional task_work run we had in get_signal(). This caused a regression for some setups, since we're relying on eg ____fput() being run to close and release, for example, a pipe and wake the other end. For 5.11, I prefer the simple solution of just reinstating the unconditional run, even if it conceptually doesn't make much sense - if you need that kind of guarantee, you should be using TWA_SIGNAL instead of TWA_NOTIFY. But it's the trivial fix for 5.11, and would ensure that other potential gotchas/assumptions for task_work don't regress for 5.11. We're looking into further simplifying the task_work notifications for 5.12 which would resolve that too" * tag 'task_work-2021-01-19' of git://git.kernel.dk/linux-block: task_work: unconditionally run task_work from get_signal()
This commit is contained in:
@@ -2550,6 +2550,9 @@ bool get_signal(struct ksignal *ksig)
|
|||||||
struct signal_struct *signal = current->signal;
|
struct signal_struct *signal = current->signal;
|
||||||
int signr;
|
int signr;
|
||||||
|
|
||||||
|
if (unlikely(current->task_works))
|
||||||
|
task_work_run();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For non-generic architectures, check for TIF_NOTIFY_SIGNAL so
|
* For non-generic architectures, check for TIF_NOTIFY_SIGNAL so
|
||||||
* that the arch handlers don't all have to do it. If we get here
|
* that the arch handlers don't all have to do it. If we get here
|
||||||
|
|||||||
Reference in New Issue
Block a user