The code for checking for a wrapped HFS+ volume looks at the wrong offset.
Index: fs/hfsplus/hfsp_volume.c =================================================================== --- fs/hfsplus/hfsp_volume.c (revision 1041) +++ fs/hfsplus/hfsp_volume.c (working copy) @@ -302,7 +302,7 @@ os_read(fd, vol, 2, HFSP_BLOCKSZ_BITS);
if (__be16_to_cpu(vol[0]) == HFS_VOLHEAD_SIG && - __be16_to_cpu(vol[0x7c]) == HFSP_VOLHEAD_SIG) { + __be16_to_cpu(vol[0x3e]) == HFSP_VOLHEAD_SIG) { ret = -1; } else if (__be16_to_cpu(vol[0]) == HFSP_VOLHEAD_SIG) { ret = -1;