]> git.baikalelectronics.ru Git - kernel.git/commit
vfs: cap dedupe request structure size at PAGE_SIZE
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 15 Sep 2016 03:20:44 +0000 (20:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Sep 2016 20:29:52 +0000 (13:29 -0700)
commit4fed245cb00ebc305a07f2b979494d372d4d537e
tree6b09fe48b1c87c94f8274be6e834dc6abada6c63
parente864d65b825ba6f83c483950b7719e1311d7f10f
vfs: cap dedupe request structure size at PAGE_SIZE

Kirill A Shutemov reports that the kernel doesn't try to cap dest_count
in any way, and uses the number to allocate kernel memory.  This causes
high order allocation warnings in the kernel log if someone passes in a
big enough value.  We should clamp the allocation at PAGE_SIZE to avoid
stressing the VM.

The two existing users of the dedupe ioctl never send more than 120
requests, so we can safely clamp dest_range at PAGE_SIZE, because with
4k pages we can handle up to 127 dedupe candidates.  Given the max
extent length of 16MB, we can end up doing 2GB of IO which is plenty.

[ Note: the "offsetof()" can't overflow, because 'count' is just a
  16-bit integer.  That's not obvious in the limited context of the
  patch, so I'm noting it here because it made me go look.  - Linus ]

Reported-by: "Kirill A. Shutemov" <kirill@shutemov.name>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ioctl.c