gfs2: Fix sign extension bug in gfs2_update_stats
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 17 May 2019 18:18:43 +0000 (19:18 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Wed, 22 May 2019 12:09:44 +0000 (14:09 +0200)
commit5a5ec83d6ac974b12085cd99b196795f14079037
treeba7ac34e9dbe8e0795b3704e36d5bdb88dc01faa
parenta188339ca5a396acc588e5851ed7e19f66b0ebd9
gfs2: Fix sign extension bug in gfs2_update_stats

Commit 4d207133e9c3 changed the types of the statistic values in struct
gfs2_lkstats from s64 to u64.  Because of that, what should be a signed
value in gfs2_update_stats turned into an unsigned value.  When shifted
right, we end up with a large positive value instead of a small negative
value, which results in an incorrect variance estimate.

Fixes: 4d207133e9c3 ("gfs2: Make statistics unsigned, suitable for use with do_div()")
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Cc: stable@vger.kernel.org # v4.4+
fs/gfs2/lock_dlm.c