aboutsummaryrefslogtreecommitdiffstats
path: root/fs/autofs4/dev-ioctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/autofs4/dev-ioctl.c')
-rw-r--r--fs/autofs4/dev-ioctl.c12
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;