lkml.org 
[lkml]   [2019]   [Jul]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH 12/12] closures: fix a race on wakeup from closure_sync
From
Date
Hi Kent,

On 2019/6/11 3:14 上午, Kent Overstreet wrote:
> Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Acked-by: Coly Li <colyli@suse.de>

And also I receive report for suspicious closure race condition in
bcache, and people ask for having this patch into Linux v5.3.

So before this patch gets merged into upstream, I plan to rebase it to
drivers/md/bcache/closure.c at this moment. Of cause the author is you.

When lib/closure.c merged into upstream, I will rebase all closure usage
from bcache to use lib/closure.{c,h}.

Thanks in advance.

Coly Li

> ---
> lib/closure.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/lib/closure.c b/lib/closure.c
> index 46cfe4c382..3e6366c262 100644
> --- a/lib/closure.c
> +++ b/lib/closure.c
> @@ -104,8 +104,14 @@ struct closure_syncer {
>
> static void closure_sync_fn(struct closure *cl)
> {
> - cl->s->done = 1;
> - wake_up_process(cl->s->task);
> + struct closure_syncer *s = cl->s;
> + struct task_struct *p;
> +
> + rcu_read_lock();
> + p = READ_ONCE(s->task);
> + s->done = 1;
> + wake_up_process(p);
> + rcu_read_unlock();
> }
>
> void __sched __closure_sync(struct closure *cl)
>


--

Coly Li

\
 
 \ /
  Last update: 2019-07-16 12:48    [W:0.020 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site