]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
functionfs: need to cancel ->reset_work in ->kill_sb()
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 17 Nov 2025 21:49:59 +0000 (16:49 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 18 Nov 2025 04:53:51 +0000 (23:53 -0500)
... otherwise we just might free ffs with ffs->reset_work
still on queue.  That needs to be done after ffs_data_reset() -
that's the cutoff point for configfs accesses (serialized
on gadget_info->lock), which is where the schedule_work()
would come from.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/usb/gadget/function/f_fs.c

index 0bcff49e1f11e7ee0449a8c817f1a7f4742cc6a1..27860fc0fd7d1e0825533debfbf89bc2e5c8914d 100644 (file)
@@ -2081,6 +2081,9 @@ ffs_fs_kill_sb(struct super_block *sb)
                struct ffs_data *ffs = sb->s_fs_info;
                ffs->state = FFS_CLOSING;
                ffs_data_reset(ffs);
+               // no configfs accesses from that point on,
+               // so no further schedule_work() is possible
+               cancel_work_sync(&ffs->reset_work);
                ffs_data_put(ffs);
        }
 }