PM: hibernate: x86: Use crc32 instead of md5 for hibernation e820 integrity check
authorChris von Recklinghausen <crecklin@redhat.com>
Tue, 20 Apr 2021 12:57:39 +0000 (08:57 -0400)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 21 Apr 2021 17:03:37 +0000 (19:03 +0200)
commitf5d1499ae2096d7ea301023c4cc54e427300eb0a
treee22d2b21698b43f919f759272be67438f72e2c98
parent4da6d76fb43994e558ceb82619a776e300a35e08
PM: hibernate: x86: Use crc32 instead of md5 for hibernation e820 integrity check

Hibernation fails on a system in fips mode because md5 is used for the e820
integrity check and is not available. Use crc32 instead.

The check is intended to detect whether the E820 memory map provided
by the firmware after cold boot unexpectedly differs from the one that
was in use when the hibernation image was created. In this case, the
hibernation image cannot be restored, as it may cover memory regions
that are no longer available to the OS.

A non-cryptographic checksum such as CRC-32 is sufficient to detect such
inadvertent deviations.

Fixes: 62a03defeabd ("PM / hibernate: Verify the consistent of e820 memory map by md5 digest")
Reviewed-by: Eric Biggers <ebiggers@google.com>
Tested-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Chris von Recklinghausen <crecklin@redhat.com>
[ rjw: Subject edit ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
arch/x86/kernel/e820.c
arch/x86/power/hibernate.c