diff options
Diffstat (limited to 'fs/autofs4/dev-ioctl.c')
-rw-r--r-- | fs/autofs4/dev-ioctl.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c index 00bf8fcb245f..d29b7f6df862 100644 --- a/fs/autofs4/dev-ioctl.c +++ b/fs/autofs4/dev-ioctl.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/magic.h> | 22 | #include <linux/magic.h> |
23 | #include <linux/dcache.h> | 23 | #include <linux/dcache.h> |
24 | #include <linux/uaccess.h> | 24 | #include <linux/uaccess.h> |
25 | #include <linux/slab.h> | ||
25 | 26 | ||
26 | #include "autofs_i.h" | 27 | #include "autofs_i.h" |
27 | 28 | ||
@@ -544,10 +545,9 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp, | |||
544 | goto out; | 545 | goto out; |
545 | devid = new_encode_dev(path.mnt->mnt_sb->s_dev); | 546 | devid = new_encode_dev(path.mnt->mnt_sb->s_dev); |
546 | err = 0; | 547 | err = 0; |
547 | if (path.dentry->d_inode && | 548 | if (path.mnt->mnt_root == path.dentry) { |
548 | path.mnt->mnt_root == path.dentry) { | ||
549 | err = 1; | 549 | err = 1; |
550 | magic = path.dentry->d_inode->i_sb->s_magic; | 550 | magic = path.mnt->mnt_sb->s_magic; |
551 | } | 551 | } |
552 | } else { | 552 | } else { |
553 | dev_t dev = sbi->sb->s_dev; | 553 | dev_t dev = sbi->sb->s_dev; |
@@ -560,10 +560,8 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp, | |||
560 | 560 | ||
561 | err = have_submounts(path.dentry); | 561 | err = have_submounts(path.dentry); |
562 | 562 | ||
563 | if (path.mnt->mnt_mountpoint != path.mnt->mnt_root) { | 563 | if (follow_down(&path)) |
564 | if (follow_down(&path)) | 564 | magic = path.mnt->mnt_sb->s_magic; |
565 | magic = path.mnt->mnt_sb->s_magic; | ||
566 | } | ||
567 | } | 565 | } |
568 | 566 | ||
569 | param->ismountpoint.out.devid = devid; | 567 | param->ismountpoint.out.devid = devid; |