Skip to content

Upstream review1 - #330

Merged
plbossart merged 3 commits into
thesofproject:topic/sof-devfrom
plbossart:fix/upstream-review1
Nov 29, 2018
Merged

Upstream review1#330
plbossart merged 3 commits into
thesofproject:topic/sof-devfrom
plbossart:fix/upstream-review1

Conversation

@plbossart

Copy link
Copy Markdown
Member

Couple of things I could fix on my own. 3 additional points handled off-line with Keyon, Ranjani and Liam.

Make sure we never return without decrementing reference count on
error.
Fix typos in error messages, make sure they match the function name
(too many copy/paste errors)
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
s/directio/direction
-> needs to be applied to firmware as well
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
no functional change
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>

@keyonjiekeyonjie left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@plbossart
plbossart merged commit 106d001 into thesofproject:topic/sof-devNov 29, 2018
oder-chiou pushed a commit to oder-chiou/linux-soundwire that referenced this pull request May 5, 2026
Enable the cpu v4 tests for LoongArch. Currently, we don't have BPF
trampoline in LoongArch JIT, so the fentry test `test_ptr_struct_arg`
still failed, will followup.
Test result attached below:
# ./test_progs -t verifier_sdiv,verifier_movsx,verifier_ldsx,verifier_gotol,verifier_bswap
thesofproject#316/1 verifier_bswap/BSWAP, 16:OK
thesofproject#316/2 verifier_bswap/BSWAP, 16 @unpriv:OK
thesofproject#316/3 verifier_bswap/BSWAP, 32:OK
thesofproject#316/4 verifier_bswap/BSWAP, 32 @unpriv:OK
thesofproject#316/5 verifier_bswap/BSWAP, 64:OK
thesofproject#316/6 verifier_bswap/BSWAP, 64 @unpriv:OK
thesofproject#316 verifier_bswap:OK
thesofproject#330/1 verifier_gotol/gotol, small_imm:OK
thesofproject#330/2 verifier_gotol/gotol, small_imm @unpriv:OK
thesofproject#330 verifier_gotol:OK
thesofproject#338/1 verifier_ldsx/LDSX, S8:OK
thesofproject#338/2 verifier_ldsx/LDSX, S8 @unpriv:OK
thesofproject#338/3 verifier_ldsx/LDSX, S16:OK
thesofproject#338/4 verifier_ldsx/LDSX, S16 @unpriv:OK
thesofproject#338/5 verifier_ldsx/LDSX, S32:OK
thesofproject#338/6 verifier_ldsx/LDSX, S32 @unpriv:OK
thesofproject#338/7 verifier_ldsx/LDSX, S8 range checking, privileged:OK
thesofproject#338/8 verifier_ldsx/LDSX, S16 range checking:OK
thesofproject#338/9 verifier_ldsx/LDSX, S16 range checking @unpriv:OK
thesofproject#338/10 verifier_ldsx/LDSX, S32 range checking:OK
thesofproject#338/11 verifier_ldsx/LDSX, S32 range checking @unpriv:OK
thesofproject#338 verifier_ldsx:OK
thesofproject#349/1 verifier_movsx/MOV32SX, S8:OK
thesofproject#349/2 verifier_movsx/MOV32SX, S8 @unpriv:OK
thesofproject#349/3 verifier_movsx/MOV32SX, S16:OK
thesofproject#349/4 verifier_movsx/MOV32SX, S16 @unpriv:OK
thesofproject#349/5 verifier_movsx/MOV64SX, S8:OK
thesofproject#349/6 verifier_movsx/MOV64SX, S8 @unpriv:OK
thesofproject#349/7 verifier_movsx/MOV64SX, S16:OK
thesofproject#349/8 verifier_movsx/MOV64SX, S16 @unpriv:OK
thesofproject#349/9 verifier_movsx/MOV64SX, S32:OK
thesofproject#349/10 verifier_movsx/MOV64SX, S32 @unpriv:OK
thesofproject#349/11 verifier_movsx/MOV32SX, S8, range_check:OK
thesofproject#349/12 verifier_movsx/MOV32SX, S8, range_check @unpriv:OK
thesofproject#349/13 verifier_movsx/MOV32SX, S16, range_check:OK
thesofproject#349/14 verifier_movsx/MOV32SX, S16, range_check @unpriv:OK
thesofproject#349/15 verifier_movsx/MOV32SX, S16, range_check 2:OK
thesofproject#349/16 verifier_movsx/MOV32SX, S16, range_check 2 @unpriv:OK
thesofproject#349/17 verifier_movsx/MOV64SX, S8, range_check:OK
thesofproject#349/18 verifier_movsx/MOV64SX, S8, range_check @unpriv:OK
thesofproject#349/19 verifier_movsx/MOV64SX, S16, range_check:OK
thesofproject#349/20 verifier_movsx/MOV64SX, S16, range_check @unpriv:OK
thesofproject#349/21 verifier_movsx/MOV64SX, S32, range_check:OK
thesofproject#349/22 verifier_movsx/MOV64SX, S32, range_check @unpriv:OK
thesofproject#349/23 verifier_movsx/MOV64SX, S16, R10 Sign Extension:OK
thesofproject#349/24 verifier_movsx/MOV64SX, S16, R10 Sign Extension @unpriv:OK
thesofproject#349 verifier_movsx:OK
thesofproject#361/1 verifier_sdiv/SDIV32, non-zero imm divisor, check 1:OK
thesofproject#361/2 verifier_sdiv/SDIV32, non-zero imm divisor, check 1 @unpriv:OK
thesofproject#361/3 verifier_sdiv/SDIV32, non-zero imm divisor, check 2:OK
thesofproject#361/4 verifier_sdiv/SDIV32, non-zero imm divisor, check 2 @unpriv:OK
thesofproject#361/5 verifier_sdiv/SDIV32, non-zero imm divisor, check 3:OK
thesofproject#361/6 verifier_sdiv/SDIV32, non-zero imm divisor, check 3 @unpriv:OK
thesofproject#361/7 verifier_sdiv/SDIV32, non-zero imm divisor, check 4:OK
thesofproject#361/8 verifier_sdiv/SDIV32, non-zero imm divisor, check 4 @unpriv:OK
thesofproject#361/9 verifier_sdiv/SDIV32, non-zero imm divisor, check 5:OK
thesofproject#361/10 verifier_sdiv/SDIV32, non-zero imm divisor, check 5 @unpriv:OK
thesofproject#361/11 verifier_sdiv/SDIV32, non-zero imm divisor, check 6:OK
thesofproject#361/12 verifier_sdiv/SDIV32, non-zero imm divisor, check 6 @unpriv:OK
thesofproject#361/13 verifier_sdiv/SDIV32, non-zero imm divisor, check 7:OK
thesofproject#361/14 verifier_sdiv/SDIV32, non-zero imm divisor, check 7 @unpriv:OK
thesofproject#361/15 verifier_sdiv/SDIV32, non-zero imm divisor, check 8:OK
thesofproject#361/16 verifier_sdiv/SDIV32, non-zero imm divisor, check 8 @unpriv:OK
thesofproject#361/17 verifier_sdiv/SDIV32, non-zero reg divisor, check 1:OK
thesofproject#361/18 verifier_sdiv/SDIV32, non-zero reg divisor, check 1 @unpriv:OK
thesofproject#361/19 verifier_sdiv/SDIV32, non-zero reg divisor, check 2:OK
thesofproject#361/20 verifier_sdiv/SDIV32, non-zero reg divisor, check 2 @unpriv:OK
thesofproject#361/21 verifier_sdiv/SDIV32, non-zero reg divisor, check 3:OK
thesofproject#361/22 verifier_sdiv/SDIV32, non-zero reg divisor, check 3 @unpriv:OK
thesofproject#361/23 verifier_sdiv/SDIV32, non-zero reg divisor, check 4:OK
thesofproject#361/24 verifier_sdiv/SDIV32, non-zero reg divisor, check 4 @unpriv:OK
thesofproject#361/25 verifier_sdiv/SDIV32, non-zero reg divisor, check 5:OK
thesofproject#361/26 verifier_sdiv/SDIV32, non-zero reg divisor, check 5 @unpriv:OK
thesofproject#361/27 verifier_sdiv/SDIV32, non-zero reg divisor, check 6:OK
thesofproject#361/28 verifier_sdiv/SDIV32, non-zero reg divisor, check 6 @unpriv:OK
thesofproject#361/29 verifier_sdiv/SDIV32, non-zero reg divisor, check 7:OK
thesofproject#361/30 verifier_sdiv/SDIV32, non-zero reg divisor, check 7 @unpriv:OK
thesofproject#361/31 verifier_sdiv/SDIV32, non-zero reg divisor, check 8:OK
thesofproject#361/32 verifier_sdiv/SDIV32, non-zero reg divisor, check 8 @unpriv:OK
thesofproject#361/33 verifier_sdiv/SDIV64, non-zero imm divisor, check 1:OK
thesofproject#361/34 verifier_sdiv/SDIV64, non-zero imm divisor, check 1 @unpriv:OK
thesofproject#361/35 verifier_sdiv/SDIV64, non-zero imm divisor, check 2:OK
thesofproject#361/36 verifier_sdiv/SDIV64, non-zero imm divisor, check 2 @unpriv:OK
thesofproject#361/37 verifier_sdiv/SDIV64, non-zero imm divisor, check 3:OK
thesofproject#361/38 verifier_sdiv/SDIV64, non-zero imm divisor, check 3 @unpriv:OK
thesofproject#361/39 verifier_sdiv/SDIV64, non-zero imm divisor, check 4:OK
thesofproject#361/40 verifier_sdiv/SDIV64, non-zero imm divisor, check 4 @unpriv:OK
thesofproject#361/41 verifier_sdiv/SDIV64, non-zero imm divisor, check 5:OK
thesofproject#361/42 verifier_sdiv/SDIV64, non-zero imm divisor, check 5 @unpriv:OK
thesofproject#361/43 verifier_sdiv/SDIV64, non-zero imm divisor, check 6:OK
thesofproject#361/44 verifier_sdiv/SDIV64, non-zero imm divisor, check 6 @unpriv:OK
thesofproject#361/45 verifier_sdiv/SDIV64, non-zero reg divisor, check 1:OK
thesofproject#361/46 verifier_sdiv/SDIV64, non-zero reg divisor, check 1 @unpriv:OK
thesofproject#361/47 verifier_sdiv/SDIV64, non-zero reg divisor, check 2:OK
thesofproject#361/48 verifier_sdiv/SDIV64, non-zero reg divisor, check 2 @unpriv:OK
thesofproject#361/49 verifier_sdiv/SDIV64, non-zero reg divisor, check 3:OK
thesofproject#361/50 verifier_sdiv/SDIV64, non-zero reg divisor, check 3 @unpriv:OK
thesofproject#361/51 verifier_sdiv/SDIV64, non-zero reg divisor, check 4:OK
thesofproject#361/52 verifier_sdiv/SDIV64, non-zero reg divisor, check 4 @unpriv:OK
thesofproject#361/53 verifier_sdiv/SDIV64, non-zero reg divisor, check 5:OK
thesofproject#361/54 verifier_sdiv/SDIV64, non-zero reg divisor, check 5 @unpriv:OK
thesofproject#361/55 verifier_sdiv/SDIV64, non-zero reg divisor, check 6:OK
thesofproject#361/56 verifier_sdiv/SDIV64, non-zero reg divisor, check 6 @unpriv:OK
thesofproject#361/57 verifier_sdiv/SMOD32, non-zero imm divisor, check 1:OK
thesofproject#361/58 verifier_sdiv/SMOD32, non-zero imm divisor, check 1 @unpriv:OK
thesofproject#361/59 verifier_sdiv/SMOD32, non-zero imm divisor, check 2:OK
thesofproject#361/60 verifier_sdiv/SMOD32, non-zero imm divisor, check 2 @unpriv:OK
thesofproject#361/61 verifier_sdiv/SMOD32, non-zero imm divisor, check 3:OK
thesofproject#361/62 verifier_sdiv/SMOD32, non-zero imm divisor, check 3 @unpriv:OK
thesofproject#361/63 verifier_sdiv/SMOD32, non-zero imm divisor, check 4:OK
thesofproject#361/64 verifier_sdiv/SMOD32, non-zero imm divisor, check 4 @unpriv:OK
thesofproject#361/65 verifier_sdiv/SMOD32, non-zero imm divisor, check 5:OK
thesofproject#361/66 verifier_sdiv/SMOD32, non-zero imm divisor, check 5 @unpriv:OK
thesofproject#361/67 verifier_sdiv/SMOD32, non-zero imm divisor, check 6:OK
thesofproject#361/68 verifier_sdiv/SMOD32, non-zero imm divisor, check 6 @unpriv:OK
thesofproject#361/69 verifier_sdiv/SMOD32, non-zero reg divisor, check 1:OK
thesofproject#361/70 verifier_sdiv/SMOD32, non-zero reg divisor, check 1 @unpriv:OK
thesofproject#361/71 verifier_sdiv/SMOD32, non-zero reg divisor, check 2:OK
thesofproject#361/72 verifier_sdiv/SMOD32, non-zero reg divisor, check 2 @unpriv:OK
thesofproject#361/73 verifier_sdiv/SMOD32, non-zero reg divisor, check 3:OK
thesofproject#361/74 verifier_sdiv/SMOD32, non-zero reg divisor, check 3 @unpriv:OK
thesofproject#361/75 verifier_sdiv/SMOD32, non-zero reg divisor, check 4:OK
thesofproject#361/76 verifier_sdiv/SMOD32, non-zero reg divisor, check 4 @unpriv:OK
thesofproject#361/77 verifier_sdiv/SMOD32, non-zero reg divisor, check 5:OK
thesofproject#361/78 verifier_sdiv/SMOD32, non-zero reg divisor, check 5 @unpriv:OK
thesofproject#361/79 verifier_sdiv/SMOD32, non-zero reg divisor, check 6:OK
thesofproject#361/80 verifier_sdiv/SMOD32, non-zero reg divisor, check 6 @unpriv:OK
thesofproject#361/81 verifier_sdiv/SMOD64, non-zero imm divisor, check 1:OK
thesofproject#361/82 verifier_sdiv/SMOD64, non-zero imm divisor, check 1 @unpriv:OK
thesofproject#361/83 verifier_sdiv/SMOD64, non-zero imm divisor, check 2:OK
thesofproject#361/84 verifier_sdiv/SMOD64, non-zero imm divisor, check 2 @unpriv:OK
thesofproject#361/85 verifier_sdiv/SMOD64, non-zero imm divisor, check 3:OK
thesofproject#361/86 verifier_sdiv/SMOD64, non-zero imm divisor, check 3 @unpriv:OK
thesofproject#361/87 verifier_sdiv/SMOD64, non-zero imm divisor, check 4:OK
thesofproject#361/88 verifier_sdiv/SMOD64, non-zero imm divisor, check 4 @unpriv:OK
thesofproject#361/89 verifier_sdiv/SMOD64, non-zero imm divisor, check 5:OK
thesofproject#361/90 verifier_sdiv/SMOD64, non-zero imm divisor, check 5 @unpriv:OK
thesofproject#361/91 verifier_sdiv/SMOD64, non-zero imm divisor, check 6:OK
thesofproject#361/92 verifier_sdiv/SMOD64, non-zero imm divisor, check 6 @unpriv:OK
thesofproject#361/93 verifier_sdiv/SMOD64, non-zero imm divisor, check 7:OK
thesofproject#361/94 verifier_sdiv/SMOD64, non-zero imm divisor, check 7 @unpriv:OK
thesofproject#361/95 verifier_sdiv/SMOD64, non-zero imm divisor, check 8:OK
thesofproject#361/96 verifier_sdiv/SMOD64, non-zero imm divisor, check 8 @unpriv:OK
thesofproject#361/97 verifier_sdiv/SMOD64, non-zero reg divisor, check 1:OK
thesofproject#361/98 verifier_sdiv/SMOD64, non-zero reg divisor, check 1 @unpriv:OK
thesofproject#361/99 verifier_sdiv/SMOD64, non-zero reg divisor, check 2:OK
thesofproject#361/100 verifier_sdiv/SMOD64, non-zero reg divisor, check 2 @unpriv:OK
thesofproject#361/101 verifier_sdiv/SMOD64, non-zero reg divisor, check 3:OK
thesofproject#361/102 verifier_sdiv/SMOD64, non-zero reg divisor, check 3 @unpriv:OK
thesofproject#361/103 verifier_sdiv/SMOD64, non-zero reg divisor, check 4:OK
thesofproject#361/104 verifier_sdiv/SMOD64, non-zero reg divisor, check 4 @unpriv:OK
thesofproject#361/105 verifier_sdiv/SMOD64, non-zero reg divisor, check 5:OK
thesofproject#361/106 verifier_sdiv/SMOD64, non-zero reg divisor, check 5 @unpriv:OK
thesofproject#361/107 verifier_sdiv/SMOD64, non-zero reg divisor, check 6:OK
thesofproject#361/108 verifier_sdiv/SMOD64, non-zero reg divisor, check 6 @unpriv:OK
thesofproject#361/109 verifier_sdiv/SMOD64, non-zero reg divisor, check 7:OK
thesofproject#361/110 verifier_sdiv/SMOD64, non-zero reg divisor, check 7 @unpriv:OK
thesofproject#361/111 verifier_sdiv/SMOD64, non-zero reg divisor, check 8:OK
thesofproject#361/112 verifier_sdiv/SMOD64, non-zero reg divisor, check 8 @unpriv:OK
thesofproject#361/113 verifier_sdiv/SDIV32, zero divisor:OK
thesofproject#361/114 verifier_sdiv/SDIV32, zero divisor @unpriv:OK
thesofproject#361/115 verifier_sdiv/SDIV64, zero divisor:OK
thesofproject#361/116 verifier_sdiv/SDIV64, zero divisor @unpriv:OK
thesofproject#361/117 verifier_sdiv/SMOD32, zero divisor:OK
thesofproject#361/118 verifier_sdiv/SMOD32, zero divisor @unpriv:OK
thesofproject#361/119 verifier_sdiv/SMOD64, zero divisor:OK
thesofproject#361/120 verifier_sdiv/SMOD64, zero divisor @unpriv:OK
thesofproject#361 verifier_sdiv:OK
Summary: 5/163 PASSED, 0 SKIPPED, 0 FAILED
# ./test_progs -t ldsx_insn
test_map_val_and_probed_memory:PASS:test_ldsx_insn__open 0 nsec
test_map_val_and_probed_memory:PASS:test_ldsx_insn__load 0 nsec
libbpf: prog 'test_ptr_struct_arg': failed to attach: ERROR: strerror_r(-524)=22
libbpf: prog 'test_ptr_struct_arg': failed to auto-attach: -524
test_map_val_and_probed_memory:FAIL:test_ldsx_insn__attach unexpected error: -524 (errno 524)
thesofproject#116/1 ldsx_insn/map_val and probed_memory:FAIL
thesofproject#116/2 ldsx_insn/ctx_member_sign_ext:OK
thesofproject#116/3 ldsx_insn/ctx_member_narrow_sign_ext:OK
thesofproject#116 ldsx_insn:FAIL
All error logs:
test_map_val_and_probed_memory:PASS:test_ldsx_insn__open 0 nsec
test_map_val_and_probed_memory:PASS:test_ldsx_insn__load 0 nsec
libbpf: prog 'test_ptr_struct_arg': failed to attach: ERROR: strerror_r(-524)=22
libbpf: prog 'test_ptr_struct_arg': failed to auto-attach: -524
test_map_val_and_probed_memory:FAIL:test_ldsx_insn__attach unexpected error: -524 (errno 524)
thesofproject#116/1 ldsx_insn/map_val and probed_memory:FAIL
thesofproject#116 ldsx_insn:FAIL
Summary: 0/2 PASSED, 0 SKIPPED, 1 FAILED
Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
oder-chiou pushed a commit to oder-chiou/linux-soundwire that referenced this pull request May 5, 2026
Use a dedicated mutex to guard kvm_usage_count to fix a potential deadlock
on x86 due to a chain of locks and SRCU synchronizations. Translating the
below lockdep splat, CPU1 thesofproject#6 will wait on CPU0 thesofproject#1, CPU0 thesofproject#8 will wait on
CPU2 thesofproject#3, and CPU2 thesofproject#7 will wait on CPU1 thesofproject#4 (if there's a writer, due to the
fairness of r/w semaphores).
CPU0 CPU1 CPU2
1 lock(&kvm->slots_lock);
2 lock(&vcpu->mutex);
3 lock(&kvm->srcu);
4 lock(cpu_hotplug_lock);
5 lock(kvm_lock);
6 lock(&kvm->slots_lock);
7 lock(cpu_hotplug_lock);
8 sync(&kvm->srcu);
Note, there are likely more potential deadlocks in KVM x86, e.g. the same
pattern of taking cpu_hotplug_lock outside of kvm_lock likely exists with
__kvmclock_cpufreq_notifier():
cpuhp_cpufreq_online()
|
-> cpufreq_online()
|
-> cpufreq_gov_performance_limits()
|
-> __cpufreq_driver_target()
|
-> __target_index()
|
-> cpufreq_freq_transition_begin()
|
-> cpufreq_notify_transition()
|
-> ... __kvmclock_cpufreq_notifier()
But, actually triggering such deadlocks is beyond rare due to the
combination of dependencies and timings involved. E.g. the cpufreq
notifier is only used on older CPUs without a constant TSC, mucking with
the NX hugepage mitigation while VMs are running is very uncommon, and
doing so while also onlining/offlining a CPU (necessary to generate
contention on cpu_hotplug_lock) would be even more unusual.
The most robust solution to the general cpu_hotplug_lock issue is likely
to switch vm_list to be an RCU-protected list, e.g. so that x86's cpufreq
notifier doesn't to take kvm_lock. For now, settle for fixing the most
blatant deadlock, as switching to an RCU-protected list is a much more
involved change, but add a comment in locking.rst to call out that care
needs to be taken when walking holding kvm_lock and walking vm_list.
======================================================
WARNING: possible circular locking dependency detected
6.10.0-smp--c257535a0c9d-pip thesofproject#330 Tainted: G S O
------------------------------------------------------
tee/35048 is trying to acquire lock:
ff6a80eced71e0a8 (&kvm->slots_lock){+.+.}-{3:3}, at: set_nx_huge_pages+0x179/0x1e0 [kvm]
but task is already holding lock:
ffffffffc07abb08 (kvm_lock){+.+.}-{3:3}, at: set_nx_huge_pages+0x14a/0x1e0 [kvm]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> thesofproject#3 (kvm_lock){+.+.}-{3:3}:
__mutex_lock+0x6a/0xb40
mutex_lock_nested+0x1f/0x30
kvm_dev_ioctl+0x4fb/0xe50 [kvm]
__se_sys_ioctl+0x7b/0xd0
__x64_sys_ioctl+0x21/0x30
x64_sys_call+0x15d0/0x2e60
do_syscall_64+0x83/0x160
entry_SYSCALL_64_after_hwframe+0x76/0x7e
-> thesofproject#2 (cpu_hotplug_lock){++++}-{0:0}:
cpus_read_lock+0x2e/0xb0
static_key_slow_inc+0x16/0x30
kvm_lapic_set_base+0x6a/0x1c0 [kvm]
kvm_set_apic_base+0x8f/0xe0 [kvm]
kvm_set_msr_common+0x9ae/0xf80 [kvm]
vmx_set_msr+0xa54/0xbe0 [kvm_intel]
__kvm_set_msr+0xb6/0x1a0 [kvm]
kvm_arch_vcpu_ioctl+0xeca/0x10c0 [kvm]
kvm_vcpu_ioctl+0x485/0x5b0 [kvm]
__se_sys_ioctl+0x7b/0xd0
__x64_sys_ioctl+0x21/0x30
x64_sys_call+0x15d0/0x2e60
do_syscall_64+0x83/0x160
entry_SYSCALL_64_after_hwframe+0x76/0x7e
-> thesofproject#1 (&kvm->srcu){.+.+}-{0:0}:
__synchronize_srcu+0x44/0x1a0
synchronize_srcu_expedited+0x21/0x30
kvm_swap_active_memslots+0x110/0x1c0 [kvm]
kvm_set_memslot+0x360/0x620 [kvm]
__kvm_set_memory_region+0x27b/0x300 [kvm]
kvm_vm_ioctl_set_memory_region+0x43/0x60 [kvm]
kvm_vm_ioctl+0x295/0x650 [kvm]
__se_sys_ioctl+0x7b/0xd0
__x64_sys_ioctl+0x21/0x30
x64_sys_call+0x15d0/0x2e60
do_syscall_64+0x83/0x160
entry_SYSCALL_64_after_hwframe+0x76/0x7e
-> #0 (&kvm->slots_lock){+.+.}-{3:3}:
__lock_acquire+0x15ef/0x2e30
lock_acquire+0xe0/0x260
__mutex_lock+0x6a/0xb40
mutex_lock_nested+0x1f/0x30
set_nx_huge_pages+0x179/0x1e0 [kvm]
param_attr_store+0x93/0x100
module_attr_store+0x22/0x40
sysfs_kf_write+0x81/0xb0
kernfs_fop_write_iter+0x133/0x1d0
vfs_write+0x28d/0x380
ksys_write+0x70/0xe0
__x64_sys_write+0x1f/0x30
x64_sys_call+0x281b/0x2e60
do_syscall_64+0x83/0x160
entry_SYSCALL_64_after_hwframe+0x76/0x7e
Cc: Chao Gao <chao.gao@intel.com>
Fixes: 0bf5049 ("KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock")
Cc: stable@vger.kernel.org
Reviewed-by: Kai Huang <kai.huang@intel.com>
Acked-by: Kai Huang <kai.huang@intel.com>
Tested-by: Farrah Chen <farrah.chen@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20240830043600.127750-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@plbossart@keyonjie