[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <e8e7a98a-b078-668f-31ab-9d4410145d35@huawei.com>
Date: Thu, 5 Dec 2019 10:37:46 +0000
From: John Garry <john.garry@...wei.com>
To: <paulmck@...nel.org>, Corey Minyard <minyard@....org>
CC: Anders Roxell <anders.roxell@...aro.org>,
<openipmi-developer@...ts.sourceforge.net>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: Suspicious RCU usage in ipmi code
On 04/12/2019 22:16, Paul E. McKenney wrote:
> On Wed, Dec 04, 2019 at 02:42:39PM -0600, Corey Minyard wrote:
Thanks Paul, I have a few more like this:
[ 138.151959][ T1] =============================
[ 138.156787][ T1] WARNING: suspicious RCU usage
[ 138.161614][ T1] 5.4.0+ #1420 Not tainted
[ 138.166003][ T1] -----------------------------
[ 138.170836][ T1] kernel/kprobes.c:329 RCU-list traversed in
non-reader section!!
[ 148.634087][ T1] =============================
[ 148.638931][ T1] WARNING: suspicious RCU usage
[ 148.643777][ T1] 5.4.0+ #1420 Not tainted
[ 148.648186][ T1] -----------------------------
[ 148.653037][ T1] security/tomoyo/domain.c:44 RCU-list traversed in
non-reader section!!
Maybe we should just cc RCU ML when reporting.
>> On Wed, Dec 04, 2019 at 12:14:30PM -0800, Paul E. McKenney wrote:
>>> On Wed, Dec 04, 2019 at 05:19:11PM +0000, John Garry wrote:
>>> If you are using srcu_read_lock() and srcu_read_lock(), then you can
>>> use srcu_dereference_check() to tell lockdep what you are up to.
>>> There are a couple of examples in include/linux/kvm_host.h.
>>>
>>> Thanx, Paul
>>
>> Thanks Paul, I assume that if you use srcu_read_lock(), you using
>> list_for_each_entry_rcu() inside the lock section is fine, right?
>
> It is, and you can add an additional optional argument with the
> lockdep expression for your SRCU instance, for example
> srcu_read_lock_held(&my_srcu). This will let lockdep know that
> it should be looking for an SRCU read-side critical section.
>
> Thanx, Paul
>
>> John, I was unable to reproduce. Can you send me your kernel config
>> and the git commit you are on?
>>
git log:
596cf45cbf6e Merge branch 'akpm' (patches from Andrew)
c3bfc5dd73c6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
e5b3fc125d76 Merge branch 'x86-urgent-for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
b7fcf31f7036 Merge branch 'perf-urgent-for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
72c0870e3a05 Merge branch 'for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
d10032dd539c Merge tag 'libnvdimm-for-5.5' of
git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
john@...n-ThinkCentre-M93p:~/linux$ more .config | grep RCU
# RCU Subsystem
CONFIG_TREE_RCU=y
CONFIG_RCU_EXPERT=y
CONFIG_SRCU=y
CONFIG_TREE_SRCU=y
CONFIG_TASKS_RCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_RCU_FANOUT=64
CONFIG_RCU_FANOUT_LEAF=16
CONFIG_RCU_FAST_NO_HZ=y
CONFIG_RCU_NOCB_CPU=y
# end of RCU Subsystem
CONFIG_HAVE_RCU_TABLE_FREE=y
CONFIG_PHY_LANTIQ_RCU_USB2=m
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
# RCU Debugging
CONFIG_PROVE_RCU=y
CONFIG_PROVE_RCU_LIST=y
CONFIG_RCU_PERF_TEST=m
CONFIG_RCU_TORTURE_TEST=m
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_TRACE=y
CONFIG_RCU_EQS_DEBUG=y
# end of RCU Debugging
john@...n-ThinkCentre-M93p:~/linux$ more .config | grep IPMI
CONFIG_ACPI_IPMI=m
CONFIG_IPMI_HANDLER=y
CONFIG_IPMI_DMI_DECODE=y
CONFIG_IPMI_PLAT_DATA=y
CONFIG_IPMI_PANIC_EVENT=y
CONFIG_IPMI_PANIC_STRING=y
CONFIG_IPMI_DEVICE_INTERFACE=y
CONFIG_IPMI_SI=y
CONFIG_IPMI_SSIF=y
CONFIG_IPMI_WATCHDOG=y
CONFIG_IPMI_POWEROFF=y
CONFIG_IPMI_KCS_BMC=m
CONFIG_ASPEED_KCS_IPMI_BMC=m
CONFIG_NPCM7XX_KCS_IPMI_BMC=m
CONFIG_ASPEED_BT_IPMI_BMC=m
I have attached the .config.
Thanks,
John
View attachment "allmodconfig.config" of type "text/plain" (293010 bytes)
Powered by blists - more mailing lists