]> git.baikalelectronics.ru Git - kernel.git/commit
dm crypt: limit the number of allocated pages
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 14 Aug 2017 02:45:08 +0000 (22:45 -0400)
committerMike Snitzer <snitzer@redhat.com>
Tue, 3 Apr 2018 19:04:11 +0000 (15:04 -0400)
commit89061ed3aeced925b23013ee8c6bc622fd77b187
treed03c5a937816b5427703a6a74e83b5f11ab43bdb
parentead0770122eab3448652f81b0ebfb1bf095259b4
dm crypt: limit the number of allocated pages

dm-crypt consumes an excessive amount memory when the user attempts to
zero a dm-crypt device with "blkdiscard -z". The command "blkdiscard -z"
calls the BLKZEROOUT ioctl, it goes to the function __blkdev_issue_zeroout,
__blkdev_issue_zeroout sends a large amount of write bios that contain
the zero page as their payload.

For each incoming page, dm-crypt allocates another page that holds the
encrypted data, so when processing "blkdiscard -z", dm-crypt tries to
allocate the amount of memory that is equal to the size of the device.
This can trigger OOM killer or cause system crash.

Fix this by limiting the amount of memory that dm-crypt allocates to 2%
of total system memory. This limit is system-wide and is divided by the
number of active dm-crypt devices and each device receives an equal
share.

Cc: stable@vger.kernel.org
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-crypt.c