summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorMurad Masimov <m.masimov@mt-integration.ru>2025-03-11 17:22:03 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-03-22 12:50:49 -0700
commit0252c33cc943e9e48ddfafaa6b1eb72adb68a099 (patch)
treeb2ee5aa5e6efc05456a904a7fdc6dc66a7bb6433 /fs
parentd3f9fdc298b80ccacbbce7cdc72a8748e72c2bab (diff)
downloadlinux-0252c33cc943e9e48ddfafaa6b1eb72adb68a099.tar.gz
linux-0252c33cc943e9e48ddfafaa6b1eb72adb68a099.tar.bz2
linux-0252c33cc943e9e48ddfafaa6b1eb72adb68a099.zip
cifs: Fix integer overflow while processing acregmax mount option
[ Upstream commit 7489161b1852390b4413d57f2457cd40b34da6cc ] User-provided mount parameter acregmax of type u32 is intended to have an upper limit, but before it is validated, the value is converted from seconds to jiffies which can lead to an integer overflow. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: 5780464614f6 ("cifs: Add new parameter "acregmax" for distinct file and directory metadata timeout") Signed-off-by: Murad Masimov <m.masimov@mt-integration.ru> Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/smb/client/fs_context.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/smb/client/fs_context.c b/fs/smb/client/fs_context.c
index 249dd3f4904e..82a0987f4f86 100644
--- a/fs/smb/client/fs_context.c
+++ b/fs/smb/client/fs_context.c
@@ -1266,11 +1266,11 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
}
break;
case Opt_acregmax:
- ctx->acregmax = HZ * result.uint_32;
- if (ctx->acregmax > CIFS_MAX_ACTIMEO) {
+ if (result.uint_32 > CIFS_MAX_ACTIMEO / HZ) {
cifs_errorf(fc, "acregmax too large\n");
goto cifs_parse_mount_err;
}
+ ctx->acregmax = HZ * result.uint_32;
break;
case Opt_acdirmax:
ctx->acdirmax = HZ * result.uint_32;