Re: [PATCH next] fuse: Uninitialized variable in fuse_epoch_work()

From: Luis Henriques

Date: Sat Nov 22 2025 - 05:23:40 EST


On Fri, Nov 21 2025, Dan Carpenter wrote:

> On Fri, Nov 21, 2025 at 01:53:48PM +0000, Luis Henriques wrote:
>> On Fri, Nov 21 2025, Dan Carpenter wrote:
>>
>> > The "fm" pointer is either valid or uninitialized so checking for NULL
>> > doesn't work. Check the "inode" pointer instead.
>>
>> Hmm? Why do you say 'fm' isn't initialised? That's what fuse_ilookup()
>> is doing, isn't it?
>>
>
> I just checked again on linux-next. fuse_ilookup() only initializes
> *fm on the success path. It's either uninitialized or valid.

Yikes! You're absolutely right, I'm sorry for replying without checking.

Feel free to add my

Reviewed-by: Luis Henriques <luis@xxxxxxxxxx>

Although I guess you're patch could also move the iput():

diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 67e3340a443c..f2bac7b3a125 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -199,9 +199,8 @@ void fuse_epoch_work(struct work_struct *work)
down_read(&fc->killsb);

inode = fuse_ilookup(fc, FUSE_ROOT_ID, &fm);
- iput(inode);
-
- if (fm) {
+ if (inode) {
+ iput(inode);
/* Remove all possible active references to cached inodes */
shrink_dcache_sb(fm->sb);
} else

And thanks for your fix, Dan!

Cheers,
--
Luís