Christoph Hellwig 57835c0e71 xfs: fix log recovery buffer allocation for the legacy h_size fixup
commit 45cf976008ddef4a9c9a30310c9b4fb2a9a6602a upstream.

Commit a70f9fe52daa ("xfs: detect and handle invalid iclog size set by
mkfs") added a fixup for incorrect h_size values used for the initial
umount record in old xfsprogs versions.  Later commit 0c771b99d6c9
("xfs: clean up calculation of LR header blocks") cleaned up the log
reover buffer calculation, but stoped using the fixed up h_size value
to size the log recovery buffer, which can lead to an out of bounds
access when the incorrect h_size does not come from the old mkfs
tool, but a fuzzer.

Fix this by open coding xlog_logrec_hblks and taking the fixed h_size
into account for this calculation.

Fixes: 0c771b99d6c9 ("xfs: clean up calculation of LR header blocks")
Reported-by: Sam Sun <samsun1006219@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
Signed-off-by: Kevin Berry <kpberry@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-08-14 13:53:02 +02:00
..
2022-01-15 16:30:29 +02:00
2021-10-22 16:00:31 -07:00
2022-04-26 13:34:42 +10:00
2022-07-22 10:58:39 -07:00
2022-05-11 17:01:22 +10:00
2022-06-23 13:34:38 -07:00
2022-10-10 20:32:10 -07:00
2022-10-10 20:32:10 -07:00
2022-08-13 13:50:11 -07:00
2022-05-11 17:01:22 +10:00
2022-05-11 17:01:22 +10:00
2021-08-19 10:07:14 -07:00