Re: [PATCH 5/5] efivarfs: efivarfs_fill_super() ensure we clean upcorrectly on error

From: Jeremy Kerr
Date: Tue Oct 16 2012 - 05:16:37 EST


Hi Andy,

If we break out of the loop on the second (and onwards) iteration,
won't we still have the other inodes and dentries remaining
allocated?

As we calling this from the mount_single() wrapper:

return mount_single(fs_type, flags, data, efivarfs_fill_super);


which does this:

struct dentry *mount_single(struct file_system_type *fs_type,
int flags, void *data,
int (*fill_super)(struct super_block *, void *, int))
{
[...]
error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
if (error) {
deactivate_locked_super(s);
return ERR_PTR(error);
}
[...]

I am expecting us to get called back via deactivate_locked_super(),
which calls sb->kill_sb() which is:

static void efivarfs_kill_sb(struct super_block *sb)
{
kill_litter_super(sb);
efivarfs_sb = NULL;
}

Which I believe will clean them up.

Awesome, thanks for that. Looks good to me.

Acked-by: Jeremy Kerr <jeremy.kerr@xxxxxxxxxxxxx>

Cheers,


Jeremy Kerr

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/