Hello Kent Overstreet,
Commit ffcbec607613 ("bcachefs: Kill opts.buckets_nouse") from Apr 6,
2024 (linux-next), leads to the following Smatch static checker
warning:
fs/bcachefs/super.c:1202 bch2_dev_free()
warn: 'ca->buckets_nouse' double freed
fs/bcachefs/super.c
1185 static void bch2_dev_free(struct bch_dev *ca)
1186 {
1187 cancel_work_sync(&ca->io_error_work);
1188
1189 if (ca->kobj.state_in_sysfs &&
1190 ca->disk_sb.bdev)
1191 sysfs_remove_link(bdev_kobj(ca->disk_sb.bdev),
"bcachefs");
1192
1193 if (ca->kobj.state_in_sysfs)
1194 kobject_del(&ca->kobj);
1195
1196 kfree(ca->buckets_nouse);
^^^^^^^^^^^^^^^^^
The patch adds a free
1197 bch2_free_super(&ca->disk_sb);
1198 bch2_dev_allocator_background_exit(ca);
1199 bch2_dev_journal_exit(ca);
1200
1201 free_percpu(ca->io_done);
--> 1202 bch2_dev_buckets_free(ca);
^^
The existing code already freed ca->buckets_nouse.
1203 free_page((unsigned long) ca->sb_read_scratch);
1204
1205 bch2_time_stats_quantiles_exit(&ca->io_latency[WRITE]);
1206 bch2_time_stats_quantiles_exit(&ca->io_latency[READ]);
1207
1208 percpu_ref_exit(&ca->io_ref);
1209 #ifndef CONFIG_BCACHEFS_DEBUG
1210 percpu_ref_exit(&ca->ref);
1211 #endif
1212 kobject_put(&ca->kobj);
regards,
dan carpenter