]> www.infradead.org Git - users/jedix/linux-maple.git/commit
dm-integrity: fix a race condition when accessing recalc_sector
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 5 Sep 2024 18:27:25 +0000 (20:27 +0200)
committerMikulas Patocka <mpatocka@redhat.com>
Fri, 6 Sep 2024 10:38:16 +0000 (12:38 +0200)
commitf8e1ca92e35e9041cc0a1bc226ef07a853a22de4
tree2b95f92bb36523a38f786b473b924bb6b1141521
parentfaada2174c08662ae98b439c69efe3e79382c538
dm-integrity: fix a race condition when accessing recalc_sector

There's a race condition when accessing the variable
ic->sb->recalc_sector. The function integrity_recalc writes to this
variable when it makes some progress and the function
dm_integrity_map_continue may read this variable concurrently.

One problem is that on 32-bit architectures the 64-bit variable is not
read and written atomically - it may be possible to read garbage if read
races with write.

Another problem is that memory accesses to this variable are not guarded
with memory barriers.

This commit fixes the race - it moves reading ic->sb->recalc_sector to an
earlier place where we hold &ic->endio_wait.lock.

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