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

Commit fca23609 authored by David Howells's avatar David Howells Committed by Greg Kroah-Hartman
Browse files

hypfs: Fix error number left in struct pointer member



[ Upstream commit b54c64f7adeb241423cd46598f458b5486b0375e ]

In hypfs_fill_super(), if hypfs_create_update_file() fails,
sbi->update_file is left holding an error number.  This is passed to
hypfs_kill_super() which doesn't check for this.

Fix this by not setting sbi->update_value until after we've checked for
error.

Fixes: 24bbb1fa ("[PATCH] s390_hypfs filesystem")
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
cc: Heiko Carstens <heiko.carstens@de.ibm.com>
cc: linux-s390@vger.kernel.org
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 1a63ec5f
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -269,7 +269,7 @@ static int hypfs_show_options(struct seq_file *s, struct dentry *root)
static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
{
{
	struct inode *root_inode;
	struct inode *root_inode;
	struct dentry *root_dentry;
	struct dentry *root_dentry, *update_file;
	int rc = 0;
	int rc = 0;
	struct hypfs_sb_info *sbi;
	struct hypfs_sb_info *sbi;


@@ -300,9 +300,10 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
		rc = hypfs_diag_create_files(root_dentry);
		rc = hypfs_diag_create_files(root_dentry);
	if (rc)
	if (rc)
		return rc;
		return rc;
	sbi->update_file = hypfs_create_update_file(root_dentry);
	update_file = hypfs_create_update_file(root_dentry);
	if (IS_ERR(sbi->update_file))
	if (IS_ERR(update_file))
		return PTR_ERR(sbi->update_file);
		return PTR_ERR(update_file);
	sbi->update_file = update_file;
	hypfs_update_update(sb);
	hypfs_update_update(sb);
	pr_info("Hypervisor filesystem mounted\n");
	pr_info("Hypervisor filesystem mounted\n");
	return 0;
	return 0;