diff mbox series

[resend] vfs: return EINVAL instead of ENOENT when missing source

Message ID 20190501003535.23426-1-jencce.kernel@gmail.com (mailing list archive)
State New, archived
Headers show
Series [resend] vfs: return EINVAL instead of ENOENT when missing source | expand

Commit Message

Murphy Zhou May 1, 2019, 12:35 a.m. UTC
From: Xiong Zhou <jencce.kernel@gmail.com>

mount(2) with a NULL source device would return ENOENT instead of EINVAL
after this commit:

commit f3a09c92018a91ad0981146a4ac59414f814d801
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Dec 23 18:55:56 2018 -0500

    introduce fs_context methods

Change the return value to be compatible with the old behaviour.

This was caught by LTP mount02[1]. This testcase is calling mount(2) with a
NULL device name and expecting EINVAL to PASS but now we are getting ENOENT.

[1] https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/syscalls/mount/mount02.c

Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
Reviewed-by: David Howells <dhowells@redhat.com>
---
 fs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Al Viro May 1, 2019, 1:03 a.m. UTC | #1
On Wed, May 01, 2019 at 08:35:35AM +0800, Murphy Zhou wrote:
> From: Xiong Zhou <jencce.kernel@gmail.com>
> 
> mount(2) with a NULL source device would return ENOENT instead of EINVAL
> after this commit:

See ee948837d7fa in vfs.git#fixes...
Murphy Zhou May 1, 2019, 6:49 a.m. UTC | #2
On Wed, May 1, 2019 at 9:03 AM Al Viro <viro@zeniv.linux.org.uk> wrote:
>
> On Wed, May 01, 2019 at 08:35:35AM +0800, Murphy Zhou wrote:
> > From: Xiong Zhou <jencce.kernel@gmail.com>
> >
> > mount(2) with a NULL source device would return ENOENT instead of EINVAL
> > after this commit:
>
> See ee948837d7fa in vfs.git#fixes...

Got it. Thanks!
diff mbox series

Patch

diff --git a/fs/super.c b/fs/super.c
index 583a0124bc39..48e51f13a4ba 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -1469,7 +1469,7 @@  int vfs_get_tree(struct fs_context *fc)
 
 	if (fc->fs_type->fs_flags & FS_REQUIRES_DEV && !fc->source) {
 		errorf(fc, "Filesystem requires source device");
-		return -ENOENT;
+		return -EINVAL;
 	}
 
 	if (fc->root)