On Thu, Sep 23, 2021 at 2:20 AM Ian Kent <raven@xxxxxxxxxx> wrote: > > There's a mistake in commit 2be7828c9fefc ("get rid of autofs_getpath()") > that affects kernels from v5.13.0, basically missed because of me not > fully testing the change for Al. > > The problem is that the hash calculation for the wait name qstr hasn't > been updated to account for the change to use dentry_path_raw(). This > prevents the correct matching an existing wait resulting in multiple > notifications being sent to the daemon for the same mount which must > not occur. > > The problem wasn't discovered earlier because it only occurs when > multiple processes trigger a request for the same mount concurrently > so it only shows up in more aggressive testing. I suppose it shows up in more than just testing, as we have a bug where this is impacting a user doing regular desktop things. Justin > Fixes: 2be7828c9fefc ("get rid of autofs_getpath()") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Ian Kent <raven@xxxxxxxxxx> > --- > fs/autofs/waitq.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/autofs/waitq.c b/fs/autofs/waitq.c > index 16b5fca0626e..54c1f8b8b075 100644 > --- a/fs/autofs/waitq.c > +++ b/fs/autofs/waitq.c > @@ -358,7 +358,7 @@ int autofs_wait(struct autofs_sb_info *sbi, > qstr.len = strlen(p); > offset = p - name; > } > - qstr.hash = full_name_hash(dentry, name, qstr.len); > + qstr.hash = full_name_hash(dentry, qstr.name, qstr.len); > > if (mutex_lock_interruptible(&sbi->wq_mutex)) { > kfree(name); > >