[Devel] [PATCH RHEL9 COMMIT] fs/fuse/kio: accidental preempt_count disbalance

Konstantin Khorenko khorenko at virtuozzo.com
Thu Feb 13 21:53:35 MSK 2025


The commit is pushed to "branch-rh9-5.14.0-427.44.1.vz9.80.x-ovz" and will appear at git at bitbucket.org:openvz/vzkernel.git
after rh9-5.14.0-427.44.1.vz9.80.15
------>
commit a2378f1e33fbe2918e56c6082e5a2f6c893a0d48
Author: Alexey Kuznetsov <kuznet at virtuozzo.com>
Date:   Wed Feb 12 02:44:08 2025 +0800

    fs/fuse/kio: accidental preempt_count disbalance
    
    One in pcs_cs_accel is proven to be fatal, another one in pcs_mr_get()
    is just a finding while searching for the first one.
    
    Signed-off-by: Alexey Kuznetsov <kuznet at virtuozzo.com>
    
    Fixes: 48f7ae56ed7f ("fs/fuse kio: implement memory region to support zero-copy
    between userspace and kernel.")
    Feature: fuse: kRPC - single RPC for kernel and userspace
    
    Fixes: 4a8ed153b982 ("fuse: cs acceleration for writes")
    Feature: vStorage
---
 fs/fuse/kio/pcs/pcs_cs_accel.c | 2 +-
 fs/fuse/kio/pcs/pcs_mr.c       | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/fuse/kio/pcs/pcs_cs_accel.c b/fs/fuse/kio/pcs/pcs_cs_accel.c
index 66a0e0f83bbe..036ca172e299 100644
--- a/fs/fuse/kio/pcs/pcs_cs_accel.c
+++ b/fs/fuse/kio/pcs/pcs_cs_accel.c
@@ -1128,8 +1128,8 @@ static void __complete_acr_work(struct work_struct * w)
 				for (i = 0; i < n; i++, ch++)
 					*ch = ireq->iochunk.acr.io_times[i];
 			}
+			FUSE_TRACE_COMMIT(fc->ktrace);
 		}
-		FUSE_TRACE_COMMIT(fc->ktrace);
 	}
 
 	ireq_clear_acr(ireq);
diff --git a/fs/fuse/kio/pcs/pcs_mr.c b/fs/fuse/kio/pcs/pcs_mr.c
index c8efc1301bac..9d83782bd915 100644
--- a/fs/fuse/kio/pcs/pcs_mr.c
+++ b/fs/fuse/kio/pcs/pcs_mr.c
@@ -102,6 +102,7 @@ struct pcs_mr *pcs_mr_get(struct pcs_mr_set *mrs, int idx)
 		rcu_read_unlock();
 		return mr;
 	}
+	rcu_read_unlock();
 	return NULL;
 }
 


More information about the Devel mailing list