RCU debugging is broken for "opp" core in 4.4 |
|||||
Issue descriptionDetails shortly. Just a goofed port from 3.18 to 4.4...
,
May 7 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3aa5037e23f009056168d76ae3ac3b55062591ab commit 3aa5037e23f009056168d76ae3ac3b55062591ab Author: Douglas Anderson <dianders@chromium.org> Date: Sun May 07 02:52:31 2017 CHROMIUM: OPP: Fix RCU lockdep issues with opp When the patch ("BACKPORT: FROMLIST: OPP: Allow notifiers to call dev_pm_opp_get_{voltage,freq} RCU-free") was ported from chromeos-3.18 to chromeos-4.4, a mistake was made. Nobody noticed that the opp_rcu_lockdep_assert() macro has been changed from using rcu_lockdep_assert() (3.18) to using RCU_LOCKDEP_WARN(). One of these two things errors on "false" and the other errors on "true". Because of this, the conditions that make up this assert need to be changed to be inverted and use the opposite boolean operator. Thus, instead of adding the line: (s && srcu_read_lock_held(s)) || We instead should have added the line: !(s && srcu_read_lock_held(s)) && Fix it to add the right line. While we're at it, use good C preprocessor hygiene and add parens around the use of macro arguments. Thus, we actually end up with: !((s) && srcu_read_lock_held(s)) && NOTE: The above fixes a warning when compiling with RCU Lockdep enabled. See CL:497931 and chromium:719005 BUG= chromium:719018 TEST=No more compiler warnings. No RCU splats at bootup. Change-Id: I4bfd2629aabd39f6f91de11a53155f7fef9b20ab Signed-off-by: Douglas Anderson <dianders@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/497930 Reviewed-by: Guenter Roeck <groeck@chromium.org> [modify] https://crrev.com/3aa5037e23f009056168d76ae3ac3b55062591ab/drivers/base/power/opp/core.c
,
May 8 2017
,
Aug 1 2017
,
Jan 22 2018
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by diand...@chromium.org
, May 5 2017