[android-common:android16-6.12-kminext 1/1] fs/btrfs/subpage.c:332 btrfs_folio_end_lock_bitmap() warn: variable dereferenced before check 'fs_info' (see line 326)
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <[email protected]> |
BCC: [email protected] CC: [email protected] TO: [email protected] tree: https://android.googlesource.com/kernel/common android16-6.12-kminext head: 2bfc8fe4015fcf2e39fc5989b95d20d6b5f7b566 commit: 0138f46fea3f5a250a5f49c33bd6174dec138369 [1/1] btrfs: rename btrfs_folio_(set|start|end)_writer_lock() :::::: branch date: 2 days ago :::::: commit date: 1 year, 5 months ago config: i386-randconfig-141 (https://download.01.org/0day-ci/archive/20260719/[email protected]/config) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 smatch: v0.5.0-9185-gbcc58b9c If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Reported-by: Dan Carpenter <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ smatch warnings: fs/btrfs/subpage.c:332 btrfs_folio_end_lock_bitmap() warn: variable dereferenced before check 'fs_info' (see line 326) vim +/fs_info +332 fs/btrfs/subpage.c 1e1de38792e0ae Qu Wenruo 2021-05-31 321 0138f46fea3f5a Qu Wenruo 2024-10-09 322 void btrfs_folio_end_lock_bitmap(const struct btrfs_fs_info *fs_info, bd610c0937aaf0 Qu Wenruo 2024-09-02 323 struct folio *folio, unsigned long bitmap) bd610c0937aaf0 Qu Wenruo 2024-09-02 324 { bd610c0937aaf0 Qu Wenruo 2024-09-02 325 struct btrfs_subpage *subpage = folio_get_private(folio); bd610c0937aaf0 Qu Wenruo 2024-09-02 @326 const int start_bit = fs_info->sectors_per_page * btrfs_bitmap_nr_locked; bd610c0937aaf0 Qu Wenruo 2024-09-02 327 unsigned long flags; bd610c0937aaf0 Qu Wenruo 2024-09-02 328 bool last = false; bd610c0937aaf0 Qu Wenruo 2024-09-02 329 int cleared = 0; bd610c0937aaf0 Qu Wenruo 2024-09-02 330 int bit; bd610c0937aaf0 Qu Wenruo 2024-09-02 331 bd610c0937aaf0 Qu Wenruo 2024-09-02 @332 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, folio->mapping)) { bd610c0937aaf0 Qu Wenruo 2024-09-02 333 folio_unlock(folio); bd610c0937aaf0 Qu Wenruo 2024-09-02 334 return; bd610c0937aaf0 Qu Wenruo 2024-09-02 335 } bd610c0937aaf0 Qu Wenruo 2024-09-02 336 0138f46fea3f5a Qu Wenruo 2024-10-09 337 if (atomic_read(&subpage->nr_locked) == 0) { 0138f46fea3f5a Qu Wenruo 2024-10-09 338 /* No subpage lock, locked by plain lock_page(). */ bd610c0937aaf0 Qu Wenruo 2024-09-02 339 folio_unlock(folio); bd610c0937aaf0 Qu Wenruo 2024-09-02 340 return; bd610c0937aaf0 Qu Wenruo 2024-09-02 341 } bd610c0937aaf0 Qu Wenruo 2024-09-02 342 bd610c0937aaf0 Qu Wenruo 2024-09-02 343 spin_lock_irqsave(&subpage->lock, flags); bd610c0937aaf0 Qu Wenruo 2024-09-02 344 for_each_set_bit(bit, &bitmap, fs_info->sectors_per_page) { bd610c0937aaf0 Qu Wenruo 2024-09-02 345 if (test_and_clear_bit(bit + start_bit, subpage->bitmaps)) bd610c0937aaf0 Qu Wenruo 2024-09-02 346 cleared++; bd610c0937aaf0 Qu Wenruo 2024-09-02 347 } 0138f46fea3f5a Qu Wenruo 2024-10-09 348 ASSERT(atomic_read(&subpage->nr_locked) >= cleared); 0138f46fea3f5a Qu Wenruo 2024-10-09 349 last = atomic_sub_and_test(cleared, &subpage->nr_locked); bd610c0937aaf0 Qu Wenruo 2024-09-02 350 spin_unlock_irqrestore(&subpage->lock, flags); bd610c0937aaf0 Qu Wenruo 2024-09-02 351 if (last) bd610c0937aaf0 Qu Wenruo 2024-09-02 352 folio_unlock(folio); bd610c0937aaf0 Qu Wenruo 2024-09-02 353 } bd610c0937aaf0 Qu Wenruo 2024-09-02 354 :::::: The code at line 332 was first introduced by commit :::::: bd610c0937aaf03b2835638ada1fab8b0524c61a btrfs: only unlock the to-be-submitted ranges inside a folio :::::: TO: Qu Wenruo <[email protected]> :::::: CC: David Sterba <[email protected]> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki