]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
autofs: fix thinko in validate_dev_ioctl()
authorIan Kent <raven@themaw.net>
Sun, 27 Oct 2024 22:47:17 +0000 (06:47 +0800)
committerChristian Brauner <brauner@kernel.org>
Mon, 28 Oct 2024 12:16:56 +0000 (13:16 +0100)
I was so sure the per-dentry expire timeout patch worked ok but my
testing was flawed.

In validate_dev_ioctl() the check for ioctl AUTOFS_DEV_IOCTL_TIMEOUT_CMD
should use the ioctl number not the passed in ioctl command.

Fixes: 433f9d76a010 ("autofs: add per dentry expire timeout")
Cc: <stable@vger.kernel.org> # mainline only
Signed-off-by: Ian Kent <raven@themaw.net>
Link: https://lore.kernel.org/r/20241027224732.5507-1-raven@themaw.net
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/autofs/dev-ioctl.c

index f011e026358ebc51b9f85d4718b2f0ea7a6f3053..6d57efbb81102edcfe86070d699eb0ceb833d2b1 100644 (file)
@@ -110,6 +110,7 @@ static inline void free_dev_ioctl(struct autofs_dev_ioctl *param)
  */
 static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
 {
+       unsigned int inr = _IOC_NR(cmd);
        int err;
 
        err = check_dev_ioctl_version(cmd, param);
@@ -133,7 +134,7 @@ static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
                 * check_name() return for AUTOFS_DEV_IOCTL_TIMEOUT_CMD.
                 */
                err = check_name(param->path);
-               if (cmd == AUTOFS_DEV_IOCTL_TIMEOUT_CMD)
+               if (inr == AUTOFS_DEV_IOCTL_TIMEOUT_CMD)
                        err = err ? 0 : -EINVAL;
                if (err) {
                        pr_warn("invalid path supplied for cmd(0x%08x)\n",
@@ -141,8 +142,6 @@ static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
                        goto out;
                }
        } else {
-               unsigned int inr = _IOC_NR(cmd);
-
                if (inr == AUTOFS_DEV_IOCTL_OPENMOUNT_CMD ||
                    inr == AUTOFS_DEV_IOCTL_REQUESTER_CMD ||
                    inr == AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD) {