powerpc/powernv/pci: fix a RCU-list lock
It is unsafe to traverse tbl->it_group_list without the RCU read lock.
WARNING: suspicious RCU usage
5.7.0-rc4-next-
20200508 #1 Not tainted
-----------------------------
arch/powerpc/platforms/powernv/pci-ioda-tce.c:355 RCU-list traversed in non-reader section!!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
3 locks held by qemu-kvm/4305:
#0:
c000000bc3fe6988 (&container->group_lock){++++}-{3:3}, at: vfio_fops_unl_ioctl+0x108/0x410 [vfio]
#1:
c00800000fcc7400 (&vfio.iommu_drivers_lock){+.+.}-{3:3}, at: vfio_fops_unl_ioctl+0x148/0x410 [vfio]
#2:
c000000bc3fe4d68 (&container->lock){+.+.}-{3:3}, at: tce_iommu_attach_group+0x3c/0x4f0 [vfio_iommu_spapr_tce]
stack backtrace:
CPU: 4 PID: 4305 Comm: qemu-kvm Not tainted 5.7.0-rc4-next-
20200508 #1
Call Trace:
[
c0000010f29afa60] [
c0000000007154c8] dump_stack+0xfc/0x174 (unreliable)
[
c0000010f29afab0] [
c0000000001d8ff0] lockdep_rcu_suspicious+0x140/0x164
[
c0000010f29afb30] [
c0000000000dae2c] pnv_pci_unlink_table_and_group+0x11c/0x200
[
c0000010f29afb70] [
c0000000000d4a34] pnv_pci_ioda2_unset_window+0xc4/0x190
[
c0000010f29afbf0] [
c0000000000d4b4c] pnv_ioda2_take_ownership+0x4c/0xd0
[
c0000010f29afc30] [
c00800000fd60ee0] tce_iommu_attach_group+0x2c8/0x4f0 [vfio_iommu_spapr_tce]
[
c0000010f29afcd0] [
c00800000fcc11a0] vfio_fops_unl_ioctl+0x238/0x410 [vfio]
[
c0000010f29afd50] [
c0000000005430a8] ksys_ioctl+0xd8/0x130
[
c0000010f29afda0] [
c000000000543128] sys_ioctl+0x28/0x40
[
c0000010f29afdc0] [
c000000000038af4] system_call_exception+0x114/0x1e0
[
c0000010f29afe20] [
c00000000000c8f0] system_call_common+0xf0/0x278
Signed-off-by: Qian Cai <cai@lca.pw>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200510051347.1906-1-cai@lca.pw