diff options
author | Boris Burkov <boris@bur.io> | 2025-04-25 12:47:50 -0700 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2025-05-02 13:20:08 +0200 |
commit | d6fe0c69b3aa5c985380b794bdf8e6e9b1811e60 (patch) | |
tree | 19a7eb1f2a1247de576fde5badb67c0ee7a1f2b7 | |
parent | bc7e0975093567f51be8e1bdf4aa5900a3cf0b1e (diff) |
btrfs: handle empty eb->folios in num_extent_folios()
num_extent_folios() unconditionally calls folio_order() on
eb->folios[0]. If that is NULL this will be a segfault. It is reasonable
for it to return 0 as the number of folios in the eb when the first
entry is NULL, so do that instead.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Boris Burkov <boris@bur.io>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | fs/btrfs/extent_io.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h index 2e261892c7bc..f5b28b5c4908 100644 --- a/fs/btrfs/extent_io.h +++ b/fs/btrfs/extent_io.h @@ -298,6 +298,8 @@ static inline int __pure num_extent_pages(const struct extent_buffer *eb) */ static inline int __pure num_extent_folios(const struct extent_buffer *eb) { + if (!eb->folios[0]) + return 0; if (folio_order(eb->folios[0])) return 1; return num_extent_pages(eb); |