[lkml]   [2018]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCHSET v2] percpu_ref, RCU: Audit RCU usages in percpu_ref users

Linus, if you want to pick up the first three fix patches, please pull
from the following branch.

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

* 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-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:// 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(-)



 \ /
  Last update: 2018-03-14 20:42    [W:0.132 / U:0.588 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site