Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8af634ff authored by Jan Kara's avatar Jan Kara
Browse files

ext2: Fix possible sleep in atomic during mount option parsing



match_int() used in mount option parsing can allocate memory using
GFP_KERNEL and thus sleep. Avoid parsing mount options with sbi->s_lock
held.

Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 08851957
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1321,20 +1321,20 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
	int err;

	sync_filesystem(sb);
	spin_lock(&sbi->s_lock);

	spin_lock(&sbi->s_lock);
	new_opts.s_mount_opt = sbi->s_mount_opt;
	new_opts.s_resuid = sbi->s_resuid;
	new_opts.s_resgid = sbi->s_resgid;
	spin_unlock(&sbi->s_lock);

	/*
	 * Allow the "check" option to be passed as a remount option.
	 */
	if (!parse_options(data, sb, &new_opts)) {
		spin_unlock(&sbi->s_lock);
	if (!parse_options(data, sb, &new_opts))
		return -EINVAL;
	}

	spin_lock(&sbi->s_lock);
	es = sbi->s_es;
	if ((sbi->s_mount_opt ^ new_opts.s_mount_opt) & EXT2_MOUNT_DAX) {
		ext2_msg(sb, KERN_WARNING, "warning: refusing change of "