reiserfs: add comment to explain endianness issue in xattr_hash
authorBharath Vedartham <>
Tue, 14 May 2019 22:44:29 +0000 (15:44 -0700)
committerLinus Torvalds <>
Wed, 15 May 2019 02:52:50 +0000 (19:52 -0700)
csum_partial() gives different results for little-endian and big-endian
hosts.  This causes images created on little-endian hosts and mounted on
big endian hosts to see csum mismatches.  This causes an endianness bug.
Sparse gives a warning as csum_partial returns a restricted integer type
__wsum_t and xattr_hash expects __u32.  This warning acts as a reminder
for this bug and should not be suppressed.

This comment aims to convey these endianness issues.

[ coding-style fixes]
Signed-off-by: Bharath Vedartham <>
Cc: Al Viro <>
Cc: Jann Horn <>
Cc: Jeff Mahoney <>
Cc: Jan Kara <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>

index 32d8986c26fb1fa2d3c5140d9fb7629eaf9b865f..b5b26d8a192c4ae71d5a958bd4968183f3ca010a 100644 (file)
@@ -450,6 +450,15 @@ fail:
 static inline __u32 xattr_hash(const char *msg, int len)
+       /*
+        * csum_partial() gives different results for little-endian and
+        * big endian hosts. Images created on little-endian hosts and
+        * mounted on big-endian hosts(and vice versa) will see csum mismatches
+        * when trying to fetch xattrs. Treating the hash as __wsum_t would
+        * lower the frequency of mismatch.  This is an endianness bug in
+        * reiserfs.  The return statement would result in a sparse warning. Do
+        * not fix the sparse warning so as to not hide a reminder of the bug.
+        */
        return csum_partial(msg, len, 0);