Choosing the most memory-consuming key slot when estimating the
memory requirement for LUKS-encrypted target
When there are multiple key slots, "kdumpctl estimate" uses the least
memory-consuming key slot. For example, when there are two memory slots
created with --pbkdf-memory=1048576 (1G) and --pbkdf-memory=524288 (512M),
"kdumpctl estimate" thinks the extra memory requirement is only 512M.
This will of course lead to OOM if the user uses the more
memory-consuming key slot. Fix it by sorting in reverse order.
Fixes: e9e6a2c
("kdumpctl: Add kdumpctl estimate")
Signed-off-by: Coiby Xu <coxu@redhat.com>
Reviewed-by: Lichen Liu <lichliu@redhat.com>
Signed-off-by: Coiby Xu <coxu@redhat.com>
This commit is contained in:
parent
15122b3f98
commit
50a8461fc7
4
kdumpctl
4
kdumpctl
@ -1242,12 +1242,12 @@ do_estimate()
|
||||
for _dev in $(get_all_kdump_crypt_dev); do
|
||||
_crypt_info=$(cryptsetup luksDump "/dev/block/$_dev")
|
||||
[[ $(echo "$_crypt_info" | sed -n "s/^Version:\s*\(.*\)/\1/p") == "2" ]] || continue
|
||||
for _mem in $(echo "$_crypt_info" | sed -n "s/\sMemory:\s*\(.*\)/\1/p" | sort -n); do
|
||||
for _mem in $(echo "$_crypt_info" | sed -n "s/\sMemory:\s*\(.*\)/\1/p" | sort -n -r); do
|
||||
crypt_size=$((crypt_size + _mem * 1024))
|
||||
break
|
||||
done
|
||||
done
|
||||
[[ $crypt_size -ne 0 ]] && echo -e "Encrypted kdump target requires extra memory, assuming using the keyslot with minimun memory requirement\n"
|
||||
[[ $crypt_size -ne 0 ]] && echo -e "Encrypted kdump target requires extra memory, assuming using the keyslot with maximum memory requirement\n"
|
||||
|
||||
estimated_size=$((kernel_size + mod_size + initrd_size + runtime_size + crypt_size))
|
||||
if [[ $baseline_size -gt $estimated_size ]]; then
|
||||
|
Loading…
Reference in New Issue
Block a user