summaryrefslogtreecommitdiffstats
path: root/fs/reiserfs
diff options
context:
space:
mode:
authorBharath Vedartham <linux.bhar@gmail.com>2019-05-14 18:44:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 22:52:50 -0400
commit672cdd56f0ae95069e399db790dbf2e303ac72b7 (patch)
treed68d174568a9992051a49a9886e4cca991050a73 /fs/reiserfs
parent1dcaa138fc7d87982ccddb7df9e4c30c6cb6eb15 (diff)
reiserfs: add comment to explain endianness issue in xattr_hash
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. [akpm@linux-foundation.org: coding-style fixes] Link: http://lkml.kernel.org/r/20190423161831.GA15387@bharath12345-Inspiron-5559 Signed-off-by: Bharath Vedartham <linux.bhar@gmail.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Jann Horn <jannh@google.com> Cc: Jeff Mahoney <jeffm@suse.com> Cc: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/reiserfs')
-rw-r--r--fs/reiserfs/xattr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 32d8986c26fb..b5b26d8a192c 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -450,6 +450,15 @@ fail:
450 450
451static inline __u32 xattr_hash(const char *msg, int len) 451static inline __u32 xattr_hash(const char *msg, int len)
452{ 452{
453 /*
454 * csum_partial() gives different results for little-endian and
455 * big endian hosts. Images created on little-endian hosts and
456 * mounted on big-endian hosts(and vice versa) will see csum mismatches
457 * when trying to fetch xattrs. Treating the hash as __wsum_t would
458 * lower the frequency of mismatch. This is an endianness bug in
459 * reiserfs. The return statement would result in a sparse warning. Do
460 * not fix the sparse warning so as to not hide a reminder of the bug.
461 */
453 return csum_partial(msg, len, 0); 462 return csum_partial(msg, len, 0);
454} 463}
455 464