All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: mingo@kernel.org, riel@redhat.com, dedekind1@gmail.com,
	linux-kernel@vger.kernel.org, mgorman@suse.de,
	rostedt@goodmis.org, juri.lelli@arm.com,
	Oleg Nesterov <oleg@redhat.com>
Subject: Re: [RFC][PATCH 1/4] sched: Fix a race between __kthread_bind() and sched_setaffinity()
Date: Fri, 7 Aug 2015 12:09:45 -0400	[thread overview]
Message-ID: <20150807160945.GF14626@mtj.duckdns.org> (raw)
In-Reply-To: <20150807155954.GP16853@twins.programming.kicks-ass.net>

Hello, Peter.

On Fri, Aug 07, 2015 at 05:59:54PM +0200, Peter Zijlstra wrote:
> > So, the problem there is that __kthread_bind() doesn't grab the same
> > lock that the syscall side grabs but workqueue used
> > set_cpus_allowed_ptr() which goes through the rq locking, so as long
> > as the check on syscall side is movied inside rq lock, it should be
> > fine.
> 
> Currently neither site uses any lock, and that is what the patch fixes
> (it uses the per-task ->pi_lock instead of the rq->lock, but that is
> immaterial).

Yeap, the testing on the syscall side should definitely be moved
inside rq->lock.

> What matters though is that you now must hold a scheduler lock while
> setting PF_NO_SETAFFINITY. In order to avoid spreading that knowledge
> around I've taught kthread_bind*() about this and made the workqueue
> code use that API (rather than having the workqueue code take scheduler
> locks).

So, as long as PF_NO_SETAFFINITY is set before the task sets its
affinity to its target holding the rq lock, it should still be safe.

> Hmm.. a better solution. Have the worker thread creation call
> kthread_bind_mask() before attach_to_pool() and have attach_to_pool()
> keep using set_cpus_allowed_ptr(). Less ugly.

Yeah, that works too.  About the same effect.

Thanks.

-- 
tejun

  reply	other threads:[~2015-08-07 16:09 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-15 15:43 [RFC][PATCH 0/4] sched,numa: pinned task accounting Peter Zijlstra
2015-05-15 15:43 ` [RFC][PATCH 1/4] sched: Fix a race between __kthread_bind() and sched_setaffinity() Peter Zijlstra
2015-05-15 15:56   ` Tejun Heo
2015-08-07 14:27     ` Peter Zijlstra
2015-08-07 15:16       ` Tejun Heo
2015-08-07 15:29         ` Peter Zijlstra
2015-08-07 15:38           ` Tejun Heo
2015-08-07 15:59             ` Peter Zijlstra
2015-08-07 16:09               ` Tejun Heo [this message]
2015-08-12 12:38   ` [tip:sched/core] " tip-bot for Peter Zijlstra
2015-05-15 15:43 ` [RFC][PATCH 2/4] sched: Make sched_class::set_cpus_allowed() unconditional Peter Zijlstra
2015-08-12 12:38   ` [tip:sched/core] " tip-bot for Peter Zijlstra
2015-08-20 16:45   ` [RFC][PATCH 2/4] " Sasha Levin
2015-05-15 15:43 ` [RFC][PATCH 3/4] sched: Change sched_class::set_cpus_allowed calling context Peter Zijlstra
     [not found]   ` <OF66BF3765.2EBFD3B1-ON48257E49.0028DC79-48257E49.0029F058@zte.com.cn>
2015-05-18  8:32     ` Peter Zijlstra
2015-05-18  9:34       ` Juri Lelli
2015-05-18 20:04       ` Peter Zijlstra
2015-08-12 12:38   ` [tip:sched/core] sched: Change the sched_class::set_cpus_allowed( ) " tip-bot for Peter Zijlstra
2015-08-13 18:47     ` Sasha Levin
2015-08-13 20:37       ` Peter Zijlstra
2015-08-13 20:59         ` Sasha Levin
2015-08-13 21:30           ` Peter Zijlstra
2015-05-15 15:43 ` [RFC][PATCH 4/4] sched, numa: Ignore pinned tasks Peter Zijlstra
2015-05-15 19:05   ` Rik van Riel
2015-05-16  9:31   ` Peter Zijlstra
2015-05-18 13:00   ` Srikar Dronamraju
2015-05-18 13:06     ` Peter Zijlstra
2015-05-18 14:13       ` Rik van Riel
2015-05-18 14:29       ` Srikar Dronamraju
2015-05-18 15:09         ` Peter Zijlstra
2015-05-18 13:10   ` Srikar Dronamraju
2015-05-18  9:08 ` [RFC][PATCH 0/4] sched,numa: pinned task accounting Artem Bityutskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150807160945.GF14626@mtj.duckdns.org \
    --to=tj@kernel.org \
    --cc=dedekind1@gmail.com \
    --cc=juri.lelli@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.