]> git.karo-electronics.de Git - karo-tx-linux.git/commit
The dqc_bitmap field of struct ocfs2_local_disk_chunk is 32-bit aligned,
authorAkinobu Mita <akinobu.mita@gmail.com>
Wed, 24 Aug 2011 23:46:27 +0000 (09:46 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 12 Sep 2011 05:27:11 +0000 (15:27 +1000)
commitda1fe3e02d4545c779082c9ad150c8a0168b9121
treeaa718a4d5d4e7b6640149899207a2a813b886dac
parent5f02e162b4cc4fd8b3e6a1cf5940df6f95ab44b9
The dqc_bitmap field of struct ocfs2_local_disk_chunk is 32-bit aligned,
but not 64-bit aligned.  The dqc_bitmap is accessed by ocfs2_set_bit(),
ocfs2_clear_bit(), ocfs2_test_bit(), or ocfs2_find_next_zero_bit().  These
are wrapper macros for ext2_*_bit() which need to take an unsigned long
aligned address (though some architectures are able to handle unaligned
address correctly)

So some 64bit architectures may not be able to access the dqc_bitmap
correctly.

This avoids such unaligned access by using another wrapper functions for
ext2_*_bit().  The code is taken from fs/ext4/mballoc.c which also need to
handle unaligned bitmap access.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/ocfs2/ocfs2.h
fs/ocfs2/quota_local.c