diff options
author | Zhen Ni <zhen.ni@easystack.cn> | 2025-09-03 14:51:12 +0800 |
---|---|---|
committer | Gabriele Monaco <gmonaco@redhat.com> | 2025-09-15 08:36:35 +0200 |
commit | 9b5096761c184b3923ae45c5e82da31005a765c7 (patch) | |
tree | c2b1ae4074f9facf37734a71026a51d5a1630847 | |
parent | 3afaff7a0ce97457c8ab46862f2c06603a89962e (diff) |
rv: Fix missing mutex unlock in rv_register_monitor()
If create_monitor_dir() fails, the function returns directly without
releasing rv_interface_lock. This leaves the mutex locked and causes
subsequent monitor registration attempts to deadlock.
Fix it by making the error path jump to out_unlock, ensuring that the
mutex is always released before returning.
Fixes: 24cbfe18d55a ("rv: Merge struct rv_monitor_def into struct rv_monitor")
Signed-off-by: Zhen Ni <zhen.ni@easystack.cn>
Reviewed-by: Gabriele Monaco <gmonaco@redhat.com>
Reviewed-by: Nam Cao <namcao@linutronix.de>
Link: https://lore.kernel.org/r/20250903065112.1878330-1-zhen.ni@easystack.cn
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
-rw-r--r-- | kernel/trace/rv/rv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/trace/rv/rv.c b/kernel/trace/rv/rv.c index b341445b8fbd..48338520376f 100644 --- a/kernel/trace/rv/rv.c +++ b/kernel/trace/rv/rv.c @@ -805,7 +805,7 @@ int rv_register_monitor(struct rv_monitor *monitor, struct rv_monitor *parent) retval = create_monitor_dir(monitor, parent); if (retval) - return retval; + goto out_unlock; /* keep children close to the parent for easier visualisation */ if (parent) |