From: Christoph Hellwig Date: Tue, 15 Nov 2022 09:39:44 +0000 (+0100) Subject: btrfs: zoned: fix missing endianness conversion in sb_write_pointer X-Git-Tag: v6.1-rc7~17^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c51f0e6a1254b3ac2d308e1c6fd8fb936992b455;p=thirdparty%2Flinux.git btrfs: zoned: fix missing endianness conversion in sb_write_pointer generation is an on-disk __le64 value, so use btrfs_super_generation to convert it to host endian before comparing it. Fixes: 12659251ca5d ("btrfs: implement log-structured superblock for ZONED mode") CC: stable@vger.kernel.org # 5.15+ Reviewed-by: Johannes Thumshirn Reviewed-by: Qu Wenruo Signed-off-by: Christoph Hellwig Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index 1912abf6d0207..44d8177eeffce 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -134,7 +134,8 @@ static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones, super[i] = page_address(page[i]); } - if (super[0]->generation > super[1]->generation) + if (btrfs_super_generation(super[0]) > + btrfs_super_generation(super[1])) sector = zones[1].start; else sector = zones[0].start;