From: Tejun Heo <tj@kernel.org>
To: torvalds@linux-foundation.org, jannh@google.com,
paulmck@linux.vnet.ibm.com, bcrl@kvack.org,
viro@zeniv.linux.org.uk, kent.overstreet@gmail.com
Cc: security@kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com
Subject: [PATCHSET v2] percpu_ref, RCU: Audit RCU usages in percpu_ref users
Date: Wed, 14 Mar 2018 12:41:57 -0700 [thread overview]
Message-ID: <20180314194205.1651587-1-tj@kernel.org> (raw)
Hello,
Linus, if you want to pick up the first three fix patches, please pull
from the following branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git percpu_ref-rcu-audit-fixes
Changes from v1[L] are
* blk_queue_enter() patch dropped. Needs further investigation.
* queue_rcu_work_on() dropped and documentation improved.
* rcu_work conversion patches separated out.
Original patchset description follows.
Jann Horn found that aio was depending on the internal RCU grace
periods of percpu-ref and that it's broken because aio uses regular
RCU while percpu_ref uses sched-RCU.
Depending on percpu_ref's internal grace periods isn't a good idea
because
* The RCU type might not match.
* percpu_ref's grace periods are used to switch to atomic mode. They
aren't between the last put and the invocation of the last release.
This is easy to get confused about and can lead to subtle bugs.
* percpu_ref might not have grace periods at all depending on its
current operation mode.
This patchset audits all percpu_ref users for their RCU usages,
clarifies percpu_ref documentation that the internal grace periods
must not be depended upon, and introduces rcu_work to simplify
bouncing to a workqueue after an RCU grace period.
This patchset contains the following eight patches.
0001-fs-aio-Add-explicit-RCU-grace-period-when-freeing-ki.patch
0002-fs-aio-Use-RCU-accessors-for-kioctx_table-table.patch
0003-RDMAVT-Fix-synchronization-around-percpu_ref.patch
0004-HMM-Remove-superflous-RCU-protection-around-radix-tr.patch
0005-percpu_ref-Update-doc-to-dissuade-users-from-dependi.patch
0006-RCU-workqueue-Implement-rcu_work.patch
0007-cgroup-Use-rcu_work-instead-of-explicit-rcu-and-work.patch
0008-fs-aio-Use-rcu_work-instead-of-explicit-rcu-and-work.patch
0001-0003 are fixes and tagged -stable.
0004 removes (seemingly) superflous RCU read lock usages.
0005 updates the doc and 0006-0008 introduce rcu_work and use it
instead of open-coded rcu+work.
This patchset is also available in the following git tree.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git percpu_ref-rcu-audit-v2
diffstat follows. Thanks.
drivers/infiniband/sw/rdmavt/mr.c | 10 ++++---
fs/aio.c | 39 ++++++++++++++++-----------
include/linux/cgroup-defs.h | 2 -
include/linux/percpu-refcount.h | 18 ++++++++----
include/linux/workqueue.h | 23 ++++++++++++++++
kernel/cgroup/cgroup.c | 21 ++++----------
kernel/workqueue.c | 54 ++++++++++++++++++++++++++++++++++++++
lib/percpu-refcount.c | 2 +
mm/hmm.c | 12 +-------
9 files changed, 130 insertions(+), 51 deletions(-)
--
tejun
[L] http://lkml.kernel.org/r/20180306172657.3060270-1-tj@kernel.org
http://lkml.kernel.org/r/20180306173316.3088458-1-tj@kernel.org
next reply other threads:[~2018-03-14 19:41 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-14 19:41 Tejun Heo [this message]
2018-03-14 19:45 ` [PATCH 1/8] fs/aio: Add explicit RCU grace period when freeing kioctx Tejun Heo
2018-03-14 19:45 ` [PATCH 2/8] fs/aio: Use RCU accessors for kioctx_table->table[] Tejun Heo
2018-03-14 19:45 ` [PATCH 3/8] RDMAVT: Fix synchronization around percpu_ref Tejun Heo
2018-03-15 22:24 ` Jason Gunthorpe
2018-03-14 19:45 ` [PATCH 4/8] HMM: Remove superflous RCU protection around radix tree lookup Tejun Heo
2018-03-14 19:45 ` Tejun Heo
2018-03-26 14:54 ` Tejun Heo
2018-03-26 14:54 ` Tejun Heo
2018-03-27 16:12 ` Jerome Glisse
2018-03-27 16:12 ` Jerome Glisse
2018-03-14 19:45 ` [PATCH 5/8] percpu_ref: Update doc to dissuade users from depending on internal RCU grace periods Tejun Heo
2018-03-19 17:10 ` Tejun Heo
2018-03-14 19:45 ` [PATCH 6/8] RCU, workqueue: Implement rcu_work Tejun Heo
2018-03-14 20:13 ` Paul E. McKenney
2018-03-16 6:01 ` Lai Jiangshan
2018-03-19 16:45 ` Tejun Heo
2018-03-20 10:04 ` Lai Jiangshan
2018-03-14 19:45 ` [PATCH 7/8] cgroup: Use rcu_work instead of explicit rcu and work item Tejun Heo
2018-03-14 19:45 ` [PATCH 8/8] fs/aio: " Tejun Heo
2018-03-19 17:12 ` Tejun Heo
2018-03-21 15:58 ` Oleg Nesterov
2018-03-21 16:40 ` Tejun Heo
2018-03-21 17:17 ` Oleg Nesterov
2018-03-21 17:53 ` Tejun Heo
2018-03-22 11:24 ` Oleg Nesterov
2018-03-26 15:04 ` Tejun Heo
2018-03-27 14:28 ` Oleg Nesterov
2018-03-27 15:55 ` Tejun Heo
2018-03-29 16:49 ` Oleg Nesterov
2018-03-29 17:41 ` Tejun Heo
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=20180314194205.1651587-1-tj@kernel.org \
--to=tj@kernel.org \
--cc=bcrl@kvack.org \
--cc=jannh@google.com \
--cc=kent.overstreet@gmail.com \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=security@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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.