Message ID | 20230927184824.2566086-1-jithu.joseph@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Hans de Goede |
Headers | show |
Series | [1/1] platform/x86/intel/ifs: release cpus_read_lock() | expand |
Hi, On 9/27/23 20:48, Jithu Joseph wrote: > Couple of error paths in do_core_test() was returning directly without > doing a necessary cpus_read_unlock(). > > Following lockdep warning was observed when exercising these scenarios > with PROVE_RAW_LOCK_NESTING enabled: > > [ 139.304775] ================================================ > [ 139.311185] WARNING: lock held when returning to user space! > [ 139.317593] 6.6.0-rc2ifs01+ #11 Tainted: G S W I > [ 139.324499] ------------------------------------------------ > [ 139.330908] bash/11476 is leaving the kernel with locks still held! > [ 139.338000] 1 lock held by bash/11476: > [ 139.342262] #0: ffffffffaa26c930 (cpu_hotplug_lock){++++}-{0:0}, at: > do_core_test+0x35/0x1c0 [intel_ifs] > > Fix the flow so that all scenarios release the lock prior to returning > from the function. > > Fixes: 5210fb4e1880 ("platform/x86/intel/ifs: Sysfs interface for Array BIST") > Cc: stable@vger.kernel.org > Signed-off-by: Jithu Joseph <jithu.joseph@intel.com> Thank you for your patch/series, I've applied this patch (series) to the pdx86 fixes branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=fixes Note it will show up in the pdx86 fixes branch once I've pushed my local branch there, which might take a while. I will include this patch in my next fixes pull-req to Linus for the current kernel development cycle. Regards, Hans > --- > drivers/platform/x86/intel/ifs/runtest.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/platform/x86/intel/ifs/runtest.c b/drivers/platform/x86/intel/ifs/runtest.c > index 1061eb7ec399..43c864add778 100644 > --- a/drivers/platform/x86/intel/ifs/runtest.c > +++ b/drivers/platform/x86/intel/ifs/runtest.c > @@ -331,14 +331,15 @@ int do_core_test(int cpu, struct device *dev) > switch (test->test_num) { > case IFS_TYPE_SAF: > if (!ifsd->loaded) > - return -EPERM; > - ifs_test_core(cpu, dev); > + ret = -EPERM; > + else > + ifs_test_core(cpu, dev); > break; > case IFS_TYPE_ARRAY_BIST: > ifs_array_test_core(cpu, dev); > break; > default: > - return -EINVAL; > + ret = -EINVAL; > } > out: > cpus_read_unlock(); > > base-commit: 6465e260f48790807eef06b583b38ca9789b6072
diff --git a/drivers/platform/x86/intel/ifs/runtest.c b/drivers/platform/x86/intel/ifs/runtest.c index 1061eb7ec399..43c864add778 100644 --- a/drivers/platform/x86/intel/ifs/runtest.c +++ b/drivers/platform/x86/intel/ifs/runtest.c @@ -331,14 +331,15 @@ int do_core_test(int cpu, struct device *dev) switch (test->test_num) { case IFS_TYPE_SAF: if (!ifsd->loaded) - return -EPERM; - ifs_test_core(cpu, dev); + ret = -EPERM; + else + ifs_test_core(cpu, dev); break; case IFS_TYPE_ARRAY_BIST: ifs_array_test_core(cpu, dev); break; default: - return -EINVAL; + ret = -EINVAL; } out: cpus_read_unlock();
Couple of error paths in do_core_test() was returning directly without doing a necessary cpus_read_unlock(). Following lockdep warning was observed when exercising these scenarios with PROVE_RAW_LOCK_NESTING enabled: [ 139.304775] ================================================ [ 139.311185] WARNING: lock held when returning to user space! [ 139.317593] 6.6.0-rc2ifs01+ #11 Tainted: G S W I [ 139.324499] ------------------------------------------------ [ 139.330908] bash/11476 is leaving the kernel with locks still held! [ 139.338000] 1 lock held by bash/11476: [ 139.342262] #0: ffffffffaa26c930 (cpu_hotplug_lock){++++}-{0:0}, at: do_core_test+0x35/0x1c0 [intel_ifs] Fix the flow so that all scenarios release the lock prior to returning from the function. Fixes: 5210fb4e1880 ("platform/x86/intel/ifs: Sysfs interface for Array BIST") Cc: stable@vger.kernel.org Signed-off-by: Jithu Joseph <jithu.joseph@intel.com> --- drivers/platform/x86/intel/ifs/runtest.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) base-commit: 6465e260f48790807eef06b583b38ca9789b6072