]> git.baikalelectronics.ru Git - kernel.git/commit
dm stats: fix possible counter corruption on 32-bit systems
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 13 Sep 2013 21:42:24 +0000 (17:42 -0400)
committerMike Snitzer <snitzer@redhat.com>
Wed, 18 Sep 2013 18:41:06 +0000 (14:41 -0400)
commitbbcb9a709df5b1d4449eb31baee0ab1c093f0681
tree49c29342acc975d30d5d7399c9ba2ceacd718a01
parent671ce0145c6919e914c9b780c7dbeef4882cc8b3
dm stats: fix possible counter corruption on 32-bit systems

There was a deliberate race condition in dm_stat_for_entry() to avoid the
overhead of disabling and enabling interrupts.  The race could result in
some events not being counted on 64-bit architectures.

However, on 32-bit architectures, operations on long long variables are
not atomic, so the race condition could cause the counter to jump by 2^32.
Such jumps could be disruptive, so we need to do proper locking on 32-bit
architectures.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: Alasdair G. Kergon <agk@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-stats.c