Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm space map: always set ev if sm_ll_mutate() succeeds

If no block was allocated or freed, sm_ll_mutate() wasn't setting
*ev, leaving the variable unitialized. sm_ll_insert(),
sm_disk_inc_block(), and sm_disk_new_block() all check ev to see
if there was an allocation event in sm_ll_mutate(), possibly
reading unitialized data.

If no allocation event occured, sm_ll_mutate() should set *ev
to SM_NONE.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>

authored by

Benjamin Marzinski and committed by
Mike Snitzer
b446396b 0c79ce0b

+2 -1
+2 -1
drivers/md/persistent-data/dm-space-map-common.c
··· 464 464 ll->nr_allocated--; 465 465 le32_add_cpu(&ie_disk.nr_free, 1); 466 466 ie_disk.none_free_before = cpu_to_le32(min(le32_to_cpu(ie_disk.none_free_before), bit)); 467 - } 467 + } else 468 + *ev = SM_NONE; 468 469 469 470 return ll->save_ie(ll, index, &ie_disk); 470 471 }