Commit 15447756 authored by Al Viro's avatar Al Viro
Browse files

functionfs: need to cancel ->reset_work in ->kill_sb()



... 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent fe474662
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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);
	}
}