This runs on extents that haven't yet been validated, so we don't want
to assert that we have a valid entry type.

Reported-by: syzbot+4f29c3f12f864d8a8...@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstr...@linux.dev>
---
 fs/bcachefs/extents.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c
index 38cd9335df7d..98bb680b3860 100644
--- a/fs/bcachefs/extents.c
+++ b/fs/bcachefs/extents.c
@@ -1409,7 +1409,7 @@ void bch2_ptr_swab(struct bkey_s k)
        for (entry = ptrs.start;
             entry < ptrs.end;
             entry = extent_entry_next(entry)) {
-               switch (extent_entry_type(entry)) {
+               switch (__extent_entry_type(entry)) {
                case BCH_EXTENT_ENTRY_ptr:
                        break;
                case BCH_EXTENT_ENTRY_crc32:
@@ -1429,6 +1429,9 @@ void bch2_ptr_swab(struct bkey_s k)
                        break;
                case BCH_EXTENT_ENTRY_rebalance:
                        break;
+               default:
+                       /* Bad entry type: will be caught by validate() */
+                       return;
                }
        }
 }
-- 
2.45.2


Reply via email to