]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ocfs2: avoid unaligned access to dqc_bitmap
authorAkinobu Mita <akinobu.mita@gmail.com>
Wed, 16 Nov 2011 23:41:12 +0000 (10:41 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 21 Nov 2011 02:18:10 +0000 (13:18 +1100)
commit6321b4ea02815e7f9ff611e1f0ea0664d6b3f138
tree851844f6adb8fe14a2fd3a031e273681a8a9a8c4
parent2b686f7bad419a23d5760c0ed8e539b6ad7137a2
ocfs2: avoid unaligned access to dqc_bitmap

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