On Wed, 18 Nov 2020, Mike Snitzer wrote: > On Wed, Nov 18 2020 at 10:49am -0500, > Mike Snitzer <snitzer@xxxxxxxxxx> wrote: > > > I don't think my suggestion will help.. given it'd still leave > > persistent_memory_claim() without a return statement. > > > > Think it worthwhile to just add a dummy 'return 0;' after the BUG(). > > Decided to go with this, now staged for 5.11: > https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-5.11&id=a1e4865b4dda7071f3707f7e551289ead66e38b1 Hi I would just use "return -EOPNOTSUPP;" and drop the "#ifdef DM_WRITECACHE_HAS_PMEM" that you added. That BUG/return -EOPNOTSUPP code can't happen at all - if DM_WRITECACHE_HAS_PMEM is not defined, WC_MODE_PMEM(wc) always returns false - so persistent_memory_claim and BUG() can't ever be called. And if it can't be called, you don't need to add a code that prints an error in that case. If we don't have DM_WRITECACHE_HAS_PMEM, the compiler optimizer will remove all the code guarded with if (WC_MODE_PMEM(wc)) as unreachable. Mikulas From: Mikulas Patocka <mpatocka@xxxxxxxxxx> Subject: [PATCH] dm writecache: remove BUG() and fail gracefully insteadfor-nextdm-5.11 Building on arch/s390/ results in this build error: cc1: some warnings being treated as errors ../drivers/md/dm-writecache.c: In function 'persistent_memory_claim': ../drivers/md/dm-writecache.c:323:1: error: no return statement in function returning non-void [-Werror=return-type] Fix this by replacing the BUG() with a -EOPNOTSUPP return. Fixes: 48debafe4f2f ("dm: add writecache target") Cc: stable@xxxxxxxxxxxxxxx # v4.18+ Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> Index: linux-2.6/drivers/md/dm-writecache.c =================================================================== --- linux-2.6.orig/drivers/md/dm-writecache.c +++ linux-2.6/drivers/md/dm-writecache.c @@ -319,7 +319,7 @@ err1: #else static int persistent_memory_claim(struct dm_writecache *wc) { - BUG(); + return -EOPNOTSUPP; } #endif