]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
autofs: fix per-dentry timeout warning
authorIan Kent <raven@themaw.net>
Tue, 11 Nov 2025 06:04:38 +0000 (14:04 +0800)
committerChristian Brauner <brauner@kernel.org>
Thu, 4 Dec 2025 08:57:51 +0000 (09:57 +0100)
The check that determines if the message that warns about the per-dentry
timeout being greater than the super block timeout is not correct.

The initial value for this field is -1 and the type of the field is
unsigned long.

I could change the type to long but the message is in the wrong place
too, it should come after the timeout setting. So leave everything else
as it is and move the message and check the timeout is actually set
as an additional condition on issuing the message. Also fix the timeout
comparison.

Signed-off-by: Ian Kent <raven@themaw.net>
Link: https://patch.msgid.link/20251111060439.19593-2-raven@themaw.net
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/autofs/dev-ioctl.c

index a58f9248b0f54d9c5c53f552a576761fbc855d26..6743b3b642175e054b86ce5dc071b2fe4779dad1 100644 (file)
@@ -432,16 +432,6 @@ static int autofs_dev_ioctl_timeout(struct file *fp,
                if (!autofs_type_indirect(sbi->type))
                        return -EINVAL;
 
-               /* An expire timeout greater than the superblock timeout
-                * could be a problem at shutdown but the super block
-                * timeout itself can change so all we can really do is
-                * warn the user.
-                */
-               if (timeout >= sbi->exp_timeout)
-                       pr_warn("per-mount expire timeout is greater than "
-                               "the parent autofs mount timeout which could "
-                               "prevent shutdown\n");
-
                dentry = try_lookup_noperm(&QSTR_LEN(param->path, path_len),
                                           base);
                if (IS_ERR_OR_NULL(dentry))
@@ -470,6 +460,18 @@ static int autofs_dev_ioctl_timeout(struct file *fp,
                        ino->flags |= AUTOFS_INF_EXPIRE_SET;
                        ino->exp_timeout = timeout * HZ;
                }
+
+               /* An expire timeout greater than the superblock timeout
+                * could be a problem at shutdown but the super block
+                * timeout itself can change so all we can really do is
+                * warn the user.
+                */
+               if (ino->flags & AUTOFS_INF_EXPIRE_SET &&
+                   ino->exp_timeout > sbi->exp_timeout)
+                       pr_warn("per-mount expire timeout is greater than "
+                               "the parent autofs mount timeout which could "
+                               "prevent shutdown\n");
+
                dput(dentry);
        }