bcachefs: Fix assertion pop in bch2_ptr_swab()
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 11 Nov 2024 21:15:15 +0000 (16:15 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Tue, 12 Nov 2024 08:46:57 +0000 (03:46 -0500)
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+4f29c3f12f864d8a8d17@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/extents.c

index c4e91d1238496dd2194045b8746e4575bf5e4084..37e3d69bec06ad21944dfabd6e02b797abcd6fab 100644 (file)
@@ -1364,7 +1364,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:
@@ -1384,6 +1384,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;
                }
        }
 }