dm integrity: conditionally disable "recalculate" feature
authorMikulas Patocka <mpatocka@redhat.com>
Wed, 20 Jan 2021 18:59:11 +0000 (13:59 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 30 Jan 2021 12:54:10 +0000 (13:54 +0100)
commit2d8848edc96b43d1dd8823a533e702953048b33e
tree0064ce1bf0b528233c0b834f34a1137d1a21809e
parent43546b74ce6cae3d0c2fa772970f2f3eeb2a0d6e
dm integrity: conditionally disable "recalculate" feature

commit 5c02406428d5219c367c5f53457698c58bc5f917 upstream.

Otherwise a malicious user could (ab)use the "recalculate" feature
that makes dm-integrity calculate the checksums in the background
while the device is already usable. When the system restarts before all
checksums have been calculated, the calculation continues where it was
interrupted even if the recalculate feature is not requested the next
time the dm device is set up.

Disable recalculating if we use internal_hash or journal_hash with a
key (e.g. HMAC) and we don't have the "legacy_recalculate" flag.

This may break activation of a volume, created by an older kernel,
that is not yet fully recalculated -- if this happens, the user should
add the "legacy_recalculate" flag to constructor parameters.

Cc: stable@vger.kernel.org
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reported-by: Daniel Glockner <dg@emlix.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/admin-guide/device-mapper/dm-integrity.rst
drivers/md/dm-integrity.c