From: Kent Overstreet Date: Wed, 15 Jan 2025 17:17:28 +0000 (-0500) Subject: bcachefs: Fix check_inode_hash_info_matches_root() X-Git-Tag: v6.14-rc1~204^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ff0b7ed607e779f0e109f7f24388e0ce07af2ebe;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Fix check_inode_hash_info_matches_root() Can't use memcmp() when the struct contains padding. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/str_hash.c b/fs/bcachefs/str_hash.c index f5977c5c67430..8c2c5539de2ed 100644 --- a/fs/bcachefs/str_hash.c +++ b/fs/bcachefs/str_hash.c @@ -167,10 +167,19 @@ found:; goto err; struct bch_hash_info hash2 = bch2_hash_info_init(c, &inode); - if (memcmp(hash_info, &hash2, sizeof(hash2))) { + if (hash_info->type != hash2.type || + memcmp(&hash_info->siphash_key, &hash2.siphash_key, sizeof(hash2.siphash_key))) { ret = repair_inode_hash_info(trans, &inode); if (!ret) { - bch_err(c, "inode hash info mismatch with root, but mismatch not found"); + bch_err(c, "inode hash info mismatch with root, but mismatch not found\n" + "%u %llx %llx\n" + "%u %llx %llx", + hash_info->type, + hash_info->siphash_key.k0, + hash_info->siphash_key.k1, + hash2.type, + hash2.siphash_key.k0, + hash2.siphash_key.k1); ret = -BCH_ERR_fsck_repair_unimplemented; } }