ocfs2: fix shift left overflow
authorJoseph Qi <joseph.qi@huawei.com>
Thu, 6 Aug 2015 22:46:48 +0000 (15:46 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 7 Aug 2015 01:39:41 +0000 (04:39 +0300)
commit32e5a2a2be6b085febaac36efff495ad65a55e6c
tree7b491fbda572fa03a6a0fbb3dc650e2e09fe7cf6
parent18896451eaeee497ef5c397d76902c6376a8787d
ocfs2: fix shift left overflow

When using a large volume, for example 9T volume with 2T already used,
frequent creation of small files with O_DIRECT when the IO is not
cluster aligned may clear sectors in the wrong place.  This will cause
filesystem corruption.

This is because p_cpos is a u32.  When calculating the corresponding
sector it should be converted to u64 first, otherwise it may overflow.

Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: <stable@vger.kernel.org> [4.0+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/aops.c