| From e1df3f11f1131e4f39ea2965aa2f38f4c16dd196 Mon Sep 17 00:00:00 2001 |
| From: Yao Liu <yotta.liu@ucloud.cn> |
| Date: Mon, 28 Jan 2019 19:44:14 +0800 |
| Subject: nfs: Fix NULL pointer dereference of dev_name |
| |
| [ Upstream commit 80ff00172407e0aad4b10b94ef0816fc3e7813cb ] |
| |
| There is a NULL pointer dereference of dev_name in nfs_parse_devname() |
| |
| The oops looks something like: |
| |
| BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 |
| ... |
| RIP: 0010:nfs_fs_mount+0x3b6/0xc20 [nfs] |
| ... |
| Call Trace: |
| ? ida_alloc_range+0x34b/0x3d0 |
| ? nfs_clone_super+0x80/0x80 [nfs] |
| ? nfs_free_parsed_mount_data+0x60/0x60 [nfs] |
| mount_fs+0x52/0x170 |
| ? __init_waitqueue_head+0x3b/0x50 |
| vfs_kern_mount+0x6b/0x170 |
| do_mount+0x216/0xdc0 |
| ksys_mount+0x83/0xd0 |
| __x64_sys_mount+0x25/0x30 |
| do_syscall_64+0x65/0x220 |
| entry_SYSCALL_64_after_hwframe+0x49/0xbe |
| |
| Fix this by adding a NULL check on dev_name |
| |
| Signed-off-by: Yao Liu <yotta.liu@ucloud.cn> |
| Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/nfs/super.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/fs/nfs/super.c b/fs/nfs/super.c |
| index 5ef2c71348bd..6b666d187907 100644 |
| --- a/fs/nfs/super.c |
| +++ b/fs/nfs/super.c |
| @@ -1906,6 +1906,11 @@ static int nfs_parse_devname(const char *dev_name, |
| size_t len; |
| char *end; |
| |
| + if (unlikely(!dev_name || !*dev_name)) { |
| + dfprintk(MOUNT, "NFS: device name not specified\n"); |
| + return -EINVAL; |
| + } |
| + |
| /* Is the host name protected with square brakcets? */ |
| if (*dev_name == '[') { |
| end = strchr(++dev_name, ']'); |
| -- |
| 2.19.1 |
| |