|
@@ -250,8 +250,9 @@ autofs4_find_wait(struct autofs_sb_info *sbi, const struct qstr *qstr)
|
|
|
static int validate_request(struct autofs_wait_queue **wait,
|
|
|
struct autofs_sb_info *sbi,
|
|
|
const struct qstr *qstr,
|
|
|
- struct dentry *dentry, enum autofs_notify notify)
|
|
|
+ const struct path *path, enum autofs_notify notify)
|
|
|
{
|
|
|
+ struct dentry *dentry = path->dentry;
|
|
|
struct autofs_wait_queue *wq;
|
|
|
struct autofs_info *ino;
|
|
|
|
|
@@ -314,6 +315,7 @@ static int validate_request(struct autofs_wait_queue **wait,
|
|
|
*/
|
|
|
if (notify == NFY_MOUNT) {
|
|
|
struct dentry *new = NULL;
|
|
|
+ struct path this;
|
|
|
int valid = 1;
|
|
|
|
|
|
/*
|
|
@@ -333,7 +335,9 @@ static int validate_request(struct autofs_wait_queue **wait,
|
|
|
dentry = new;
|
|
|
}
|
|
|
}
|
|
|
- if (have_submounts(dentry))
|
|
|
+ this.mnt = path->mnt;
|
|
|
+ this.dentry = dentry;
|
|
|
+ if (path_has_submounts(&this))
|
|
|
valid = 0;
|
|
|
|
|
|
if (new)
|
|
@@ -406,7 +410,7 @@ int autofs4_wait(struct autofs_sb_info *sbi,
|
|
|
return -EINTR;
|
|
|
}
|
|
|
|
|
|
- ret = validate_request(&wq, sbi, &qstr, dentry, notify);
|
|
|
+ ret = validate_request(&wq, sbi, &qstr, path, notify);
|
|
|
if (ret <= 0) {
|
|
|
if (ret != -EINTR)
|
|
|
mutex_unlock(&sbi->wq_mutex);
|