Re: [PATCH 2/5] fuse: quiet down complaints in fuse_conn_limit_write
From: "Darrick J. Wong" <djwong@kernel.org>
Date: 2026-02-24 19:17:45
Also in:
bpf, linux-ext4, linux-fsdevel
On Tue, Feb 24, 2026 at 09:36:38AM +0100, Horst Birthelmer wrote:
On Mon, Feb 23, 2026 at 03:06:50PM -0800, Darrick J. Wong wrote:quoted
From: Darrick J. Wong <djwong@kernel.org> gcc 15 complains about an uninitialized variable val that is passed by reference into fuse_conn_limit_write: control.c: In function ‘fuse_conn_congestion_threshold_write’: include/asm-generic/rwonce.h:55:37: warning: ‘val’ may be used uninitialized [-Wmaybe-uninitialized] 55 | *(volatile typeof(x) *)&(x) = (val); \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ include/asm-generic/rwonce.h:61:9: note: in expansion of macro ‘__WRITE_ONCE’ 61 | __WRITE_ONCE(x, val); \ | ^~~~~~~~~~~~ control.c:178:9: note: in expansion of macro ‘WRITE_ONCE’ 178 | WRITE_ONCE(fc->congestion_threshold, val); | ^~~~~~~~~~ control.c:166:18: note: ‘val’ was declared here 166 | unsigned val; | ^~~ Unfortunately there's enough macro spew involved in kstrtoul_from_user that I think gcc gives up on its analysis and sprays the above warning. AFAICT it's not actually a bug, but we could just zero-initialize the variable to enable using -Wmaybe-uninitialized to find real problems. Previously we would use some weird uninitialized_var annotation to quiet down the warnings, so clearly this code has been like this for quite some time. Cc: <redacted> # v5.9 Fixes: 3f649ab728cda8 ("treewide: Remove uninitialized_var() usage") Signed-off-by: "Darrick J. Wong" <djwong@kernel.org> --- fs/fuse/control.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/fs/fuse/control.c b/fs/fuse/control.c index 140bd5730d9984..073c2d8e4dfc7c 100644 --- a/fs/fuse/control.c +++ b/fs/fuse/control.c@@ -121,7 +121,7 @@ static ssize_t fuse_conn_max_background_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { - unsigned val; + unsigned val = 0; ssize_t ret; ret = fuse_conn_limit_write(file, buf, count, ppos, &val,@@ -163,7 +163,7 @@ static ssize_t fuse_conn_congestion_threshold_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { - unsigned val; + unsigned val = 0; struct fuse_conn *fc; ssize_t ret;This looks good to me. Trivial fix for an annoying problem. Reviewed-by: Horst Birthelmer <redacted>
Thanks for the review! --D