Skip to content
  • Akinobu Mita's avatar
    ocfs2: avoid unaligned access to dqc_bitmap · 93925579
    Akinobu Mita authored and Joel Becker's avatar Joel Becker committed
    
    
    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: default avatarAkinobu Mita <akinobu.mita@gmail.com>
    Acked-by: default avatarJoel Becker <jlbec@evilplan.org>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarJoel Becker <jlbec@evilplan.org>
    93925579