CC: kbuild-all(a)lists.01.org In-Reply-To: <20210715033704.692967-74-willy@infradead.org> References: <20210715033704.692967-74-willy@infradead.org> TO: "Matthew Wilcox (Oracle)" TO: linux-kernel(a)vger.kernel.org CC: "Matthew Wilcox (Oracle)" CC: linux-mm(a)kvack.org CC: linux-fsdevel(a)vger.kernel.org CC: Christoph Hellwig Hi "Matthew, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [cannot apply to hnaz-linux-mm/master xfs-linux/for-next tip/perf/core v5.14-rc1 next-20210716] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Matthew-Wilcox-Oracle/Memory-folios/20210715-133101 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 8096acd7442e613fad0354fc8dfdb2003cceea0b :::::: branch date: 3 days ago :::::: commit date: 3 days ago config: x86_64-rhel-8.3-kselftests (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/9cfbea80d25a5f02f8272cfcdea87bf82dcc2562 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Matthew-Wilcox-Oracle/Memory-folios/20210715-133101 git checkout 9cfbea80d25a5f02f8272cfcdea87bf82dcc2562 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) mm/page-writeback.c: note: in included file (through include/linux/rculist.h, include/linux/dcache.h, include/linux/fs.h): include/linux/rcupdate.h:716:9: sparse: sparse: context imbalance in 'account_page_redirty' - different lock contexts for basic block >> include/linux/rcupdate.h:716:9: sparse: sparse: context imbalance in '__folio_cancel_dirty' - different lock contexts for basic block include/linux/rcupdate.h:716:9: sparse: sparse: context imbalance in 'clear_page_dirty_for_io' - different lock contexts for basic block vim +/__folio_cancel_dirty +716 include/linux/rcupdate.h ^1da177e4c3f415 Linus Torvalds 2005-04-16 691 ^1da177e4c3f415 Linus Torvalds 2005-04-16 692 /* ^1da177e4c3f415 Linus Torvalds 2005-04-16 693 * So where is rcu_write_lock()? It does not exist, as there is no ^1da177e4c3f415 Linus Torvalds 2005-04-16 694 * way for writers to lock out RCU readers. This is a feature, not ^1da177e4c3f415 Linus Torvalds 2005-04-16 695 * a bug -- this property is what provides RCU's performance benefits. ^1da177e4c3f415 Linus Torvalds 2005-04-16 696 * Of course, writers must coordinate with each other. The normal ^1da177e4c3f415 Linus Torvalds 2005-04-16 697 * spinlock primitives work well for this, but any other technique may be ^1da177e4c3f415 Linus Torvalds 2005-04-16 698 * used as well. RCU does not care how the writers keep out of each ^1da177e4c3f415 Linus Torvalds 2005-04-16 699 * others' way, as long as they do so. ^1da177e4c3f415 Linus Torvalds 2005-04-16 700 */ 3d76c082907e8f8 Paul E. McKenney 2009-09-28 701 3d76c082907e8f8 Paul E. McKenney 2009-09-28 702 /** ca5ecddfa8fcbd9 Paul E. McKenney 2010-04-28 703 * rcu_read_unlock() - marks the end of an RCU read-side critical section. 3d76c082907e8f8 Paul E. McKenney 2009-09-28 704 * 0223846010750e2 Paul E. McKenney 2021-04-29 705 * In almost all situations, rcu_read_unlock() is immune from deadlock. 0223846010750e2 Paul E. McKenney 2021-04-29 706 * In recent kernels that have consolidated synchronize_sched() and 0223846010750e2 Paul E. McKenney 2021-04-29 707 * synchronize_rcu_bh() into synchronize_rcu(), this deadlock immunity 0223846010750e2 Paul E. McKenney 2021-04-29 708 * also extends to the scheduler's runqueue and priority-inheritance 0223846010750e2 Paul E. McKenney 2021-04-29 709 * spinlocks, courtesy of the quiescent-state deferral that is carried 0223846010750e2 Paul E. McKenney 2021-04-29 710 * out when rcu_read_unlock() is invoked with interrupts disabled. f27bc4873fa8b75 Paul E. McKenney 2014-05-04 711 * 3d76c082907e8f8 Paul E. McKenney 2009-09-28 712 * See rcu_read_lock() for more information. 3d76c082907e8f8 Paul E. McKenney 2009-09-28 713 */ bc33f24bdca8b6e Paul E. McKenney 2009-08-22 714 static inline void rcu_read_unlock(void) bc33f24bdca8b6e Paul E. McKenney 2009-08-22 715 { f78f5b90c4ffa55 Paul E. McKenney 2015-06-18 @716 RCU_LOCKDEP_WARN(!rcu_is_watching(), bde23c6892878e4 Heiko Carstens 2012-02-01 717 "rcu_read_unlock() used illegally while idle"); bc33f24bdca8b6e Paul E. McKenney 2009-08-22 718 __release(RCU); bc33f24bdca8b6e Paul E. McKenney 2009-08-22 719 __rcu_read_unlock(); d24209bb689e2c7 Paul E. McKenney 2015-01-21 720 rcu_lock_release(&rcu_lock_map); /* Keep acq info for rls diags. */ bc33f24bdca8b6e Paul E. McKenney 2009-08-22 721 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 722 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org