Michael Ellerman
58d1c81307
powerpc/64s: Fix native_hpte_remove() to be irq-safe
...
commit 8bbe9fee5848371d4af101be445303cac8d880c5 upstream.
Lockdep warns that the use of the hpte_lock in native_hpte_remove() is
not safe against an IRQ coming in:
================================
WARNING: inconsistent lock state
6.4.0-rc2-g0c54f4d30ecc #1 Not tainted
--------------------------------
inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
qemu-system-ppc/93865 [HC0[0]:SC0[0]:HE1:SE1] takes:
c0000000021f5180 (hpte_lock){+.?.}-{0:0}, at: native_lock_hpte+0x8/0xd0
{IN-SOFTIRQ-W} state was registered at:
lock_acquire+0x134/0x3f0
native_lock_hpte+0x44/0xd0
native_hpte_insert+0xd4/0x2a0
__hash_page_64K+0x218/0x4f0
hash_page_mm+0x464/0x840
do_hash_fault+0x11c/0x260
data_access_common_virt+0x210/0x220
__ip_select_ident+0x140/0x150
...
net_rx_action+0x3bc/0x440
__do_softirq+0x180/0x534
...
sys_sendmmsg+0x34/0x50
system_call_exception+0x128/0x320
system_call_common+0x160/0x2e4
...
Possible unsafe locking scenario:
CPU0
----
lock(hpte_lock);
<Interrupt>
lock(hpte_lock);
*** DEADLOCK ***
...
Call Trace:
dump_stack_lvl+0x98/0xe0 (unreliable)
print_usage_bug.part.0+0x250/0x278
mark_lock+0xc9c/0xd30
__lock_acquire+0x440/0x1ca0
lock_acquire+0x134/0x3f0
native_lock_hpte+0x44/0xd0
native_hpte_remove+0xb0/0x190
kvmppc_mmu_map_page+0x650/0x698 [kvm_pr]
kvmppc_handle_pagefault+0x534/0x6e8 [kvm_pr]
kvmppc_handle_exit_pr+0x6d8/0xe90 [kvm_pr]
after_sprg3_load+0x80/0x90 [kvm_pr]
kvmppc_vcpu_run_pr+0x108/0x270 [kvm_pr]
kvmppc_vcpu_run+0x34/0x48 [kvm]
kvm_arch_vcpu_ioctl_run+0x340/0x470 [kvm]
kvm_vcpu_ioctl+0x338/0x8b8 [kvm]
sys_ioctl+0x7c4/0x13e0
system_call_exception+0x128/0x320
system_call_common+0x160/0x2e4
I suspect kvm_pr is the only caller that doesn't already have IRQs
disabled, which is why this hasn't been reported previously.
Fix it by disabling IRQs in native_hpte_remove().
Fixes: 35159b5717fa ("powerpc/64s: make HPTE lock and native_tlbie_lock irq-safe")
Cc: stable@vger.kernel.org # v6.1+
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230517123033.18430-1-mpe@ellerman.id.au
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-07-23 13:49:33 +02:00
..
2022-10-10 17:53:04 -07:00
2023-07-23 13:49:33 +02:00
2022-07-27 21:36:05 +10:00
2022-09-28 19:22:12 +10:00
2022-09-26 23:00:14 +10:00
2022-05-22 15:59:43 +10:00
2023-07-01 13:16:25 +02:00
2020-10-06 07:07:06 +02:00
2022-05-08 22:15:40 +10:00
2023-07-01 13:16:24 +02:00
2022-09-30 18:35:52 +10:00
2022-09-26 22:47:37 +10:00
2023-07-19 16:21:40 +02:00
2021-12-09 22:41:18 +11:00
2021-06-25 00:07:10 +10:00
2021-06-25 00:07:10 +10:00
2021-12-02 22:57:24 +11:00
2021-12-09 22:41:21 +11:00
2022-05-05 22:11:58 +10:00
2022-09-26 23:00:13 +10:00
2021-12-23 22:35:13 +11:00
2022-09-26 23:00:13 +10:00
2023-04-20 12:35:14 +02:00
2022-05-08 22:15:41 +10:00
2022-09-26 20:58:16 +10:00
2022-05-08 22:15:04 +10:00
2022-05-05 22:12:44 +10:00
2022-07-17 17:14:37 -07:00