diff options
| author | Paul E. McKenney <paulmck@kernel.org> | 2021-07-28 21:32:28 +0300 | 
|---|---|---|
| committer | Paul E. McKenney <paulmck@kernel.org> | 2021-09-15 21:37:50 +0300 | 
| commit | 18f08e758f34e6dfe0668bee51bd2af7adacf381 (patch) | |
| tree | 82b2a416900287bb08cae7a357ab9dcb6cc26b0e /include/linux/fpga/fpga-bridge.h | |
| parent | 96017bf9039763a2e02dcc6adaa18592cd73a39d (diff) | |
| download | linux-18f08e758f34e6dfe0668bee51bd2af7adacf381.tar.xz | |
rcu-tasks: Add trc_inspect_reader() checks for exiting critical section
Currently, trc_inspect_reader() treats a task exiting its RCU Tasks
Trace read-side critical section the same as being within that critical
section.  However, this can fail because that task might have already
checked its .need_qs field, which means that it might never decrement
the all-important trc_n_readers_need_end counter.  Of course, for that
to happen, the task would need to never again execute an RCU Tasks Trace
read-side critical section, but this really could happen if the system's
last trampoline was removed.  Note that exit from such a critical section
cannot be treated as a quiescent state due to the possibility of nested
critical sections.  This means that if trc_inspect_reader() sees a
negative nesting value, it must set up to try again later.
This commit therefore ignores tasks that are exiting their RCU Tasks
Trace read-side critical sections so that they will be rechecked later.
[ paulmck: Apply feedback from Neeraj Upadhyay and Boqun Feng. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'include/linux/fpga/fpga-bridge.h')
0 files changed, 0 insertions, 0 deletions
