diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-03 17:39:53 +0200 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-05-06 16:58:17 +0200 |
commit | b30b70ad8bffcde513d34d525820ec411f48e3d7 (patch) | |
tree | 3a55139aaeb77946ed4c4c22ff6d5917866a2dad /fs/bcachefs/btree_key_cache.c | |
parent | bcachefs: bucket_pos_to_bp_noerror() (diff) | |
download | linux-b30b70ad8bffcde513d34d525820ec411f48e3d7.tar.xz linux-b30b70ad8bffcde513d34d525820ec411f48e3d7.zip |
bcachefs: Fix early error path in bch2_fs_btree_key_cache_exit()
Reported-by: syzbot+a35cdb62ec34d44fb062@syzkaller.appspotmail.com
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to '')
-rw-r--r-- | fs/bcachefs/btree_key_cache.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c index e8c1c530cd95..7dafa1accec2 100644 --- a/fs/bcachefs/btree_key_cache.c +++ b/fs/bcachefs/btree_key_cache.c @@ -956,13 +956,15 @@ void bch2_fs_btree_key_cache_exit(struct btree_key_cache *bc) } #ifdef __KERNEL__ - for_each_possible_cpu(cpu) { - struct btree_key_cache_freelist *f = - per_cpu_ptr(bc->pcpu_freed, cpu); - - for (i = 0; i < f->nr; i++) { - ck = f->objs[i]; - list_add(&ck->list, &items); + if (bc->pcpu_freed) { + for_each_possible_cpu(cpu) { + struct btree_key_cache_freelist *f = + per_cpu_ptr(bc->pcpu_freed, cpu); + + for (i = 0; i < f->nr; i++) { + ck = f->objs[i]; + list_add(&ck->list, &items); + } } } #endif |