From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934180Ab3IDAzM (ORCPT ); Tue, 3 Sep 2013 20:55:12 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:53915 "EHLO out3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761437Ab3IDAzI (ORCPT ); Tue, 3 Sep 2013 20:55:08 -0400 X-Sasl-enc: n+NZBKHzqg81dmsO3M7Kob2hoOCdTu8+0LudD2aiPloH 1378256107 Subject: [PATCH 2/3] autofs: fix the return value of autofs4_fill_super To: Linus Torvalds From: Ian Kent Cc: linux-fsdevel , rui.xiang@huawei.com, autofs mailing list , Kernel Mailing List , Al Viro Date: Wed, 04 Sep 2013 08:55:04 +0800 Message-ID: <20130904005503.5025.2712.stgit@perseus.fritz.box> In-Reply-To: <20130904005456.5025.94309.stgit@perseus.fritz.box> References: <20130904005456.5025.94309.stgit@perseus.fritz.box> User-Agent: StGit/0.16 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rui Xiang While kzallocing sbi/ino fails, it should return -ENOMEM. And it should return the err value from autofs_prepare_pipe. Signed-off-by: Rui Xiang Acked-by: Ian Kent --- fs/autofs4/inode.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c index b104726..fe390ed 100644 --- a/fs/autofs4/inode.c +++ b/fs/autofs4/inode.c @@ -211,10 +211,11 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) int pipefd; struct autofs_sb_info *sbi; struct autofs_info *ino; + int ret = -EINVAL; sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); if (!sbi) - goto fail_unlock; + return -ENOMEM; DPRINTK("starting up, sbi = %p",sbi); s->s_fs_info = sbi; @@ -248,8 +249,10 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) * Get the root inode and dentry, but defer checking for errors. */ ino = autofs4_new_ino(sbi); - if (!ino) + if (!ino) { + ret = -ENOMEM; goto fail_free; + } root_inode = autofs4_get_inode(s, S_IFDIR | 0755); root = d_make_root(root_inode); if (!root) @@ -296,7 +299,8 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) printk("autofs: could not open pipe file descriptor\n"); goto fail_dput; } - if (autofs_prepare_pipe(pipe) < 0) + ret = autofs_prepare_pipe(pipe); + if (ret < 0) goto fail_fput; sbi->pipe = pipe; sbi->pipefd = pipefd; @@ -323,8 +327,7 @@ fail_ino: fail_free: kfree(sbi); s->s_fs_info = NULL; -fail_unlock: - return -EINVAL; + return ret; } struct inode *autofs4_get_inode(struct super_block *sb, umode_t mode)