On Thu, Apr 02, 2009 at 05:18:39PM +0200, Thiemo Nagel wrote: > Theodore Tso wrote: >> On Thu, Apr 02, 2009 at 03:30:26PM +0200, Thiemo Nagel wrote: >>> When I added the block range checks, initially I was assuming that >>> when EXTENTS_FL is not set, the inode->i_data *always* contains >>> references to further blocks. Ted showed me wrong and added the condition >>> >>> ISREG() || ISDIR() || ( ISLNK() && !is_fast_symlink() ) >>> >>> before that assumption can be made. But maybe we need some further >>> restraints? >> >> It's a endian-problem; we're missing le32_to_cpu() in that patch. >> Sparc is big-endian. > > Sorry for that. Could you also fix the types? bref should have a type of __le32, not unsigned int, and when you pass in the reference to __ext4_check_blockref(), there was an inappropriate cast to unsigned int which hid kernel's natural type checking to catch these sorts of problems. I haven't had time yet to check your other patches; could you also take a quick scan to make sure we have all of the byte-swapping calls needed for proper big-endian checking, that we're using the correct __le32 types and not doing any casts? I should have caught this when I did my review of your patches, so this is also partially my fault. Many thanks, - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html