]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fix multiplication overflow in copy_fdtable()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 19 May 2020 21:48:52 +0000 (17:48 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 19 May 2020 22:29:36 +0000 (18:29 -0400)
cpy and set really should be size_t; we won't get an overflow on that,
since sysctl_nr_open can't be set above ~(size_t)0 / sizeof(void *),
so nr that would've managed to overflow size_t on that multiplication
won't get anywhere near copy_fdtable() - we'll fail with EMFILE
before that.

Cc: stable@kernel.org # v2.6.25+
Fixes: 9cfe015aa424 (get rid of NR_OPEN and introduce a sysctl_nr_open)
Reported-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/file.c

index c8a4e4c86e55c8cce4f38b95d7c94e6d0e3d0613..abb8b7081d7a44e1f82cd1c862d25dfb63c8bb40 100644 (file)
--- a/fs/file.c
+++ b/fs/file.c
@@ -70,7 +70,7 @@ static void copy_fd_bitmaps(struct fdtable *nfdt, struct fdtable *ofdt,
  */
 static void copy_fdtable(struct fdtable *nfdt, struct fdtable *ofdt)
 {
-       unsigned int cpy, set;
+       size_t cpy, set;
 
        BUG_ON(nfdt->max_fds < ofdt->max_fds);