Patch "dm bufio: avoid false-positive Wmaybe-uninitialized warning" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
dm bufio: avoid false-positive Wmaybe-uninitialized warning
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
dm-bufio-avoid-false-positive-wmaybe-uninitialized-warning.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
590347e4000356f55eb10b03ced2686bd74dab40Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Thu, 22 Feb 2018 16:56:16 +0100
Subject: dm bufio: avoid false-positive Wmaybe-uninitialized warning
From: Arnd Bergmann <[email protected]>
commit 590347e4000356f55eb10b03ced2686bd74dab40 upstream.
gcc-6.3 and earlier show a new warning after a seemingly unrelated change to the arm64 PAGE_KERNEL definition:
In file included from drivers/md/dm-bufio.c:14:0:drivers/md/dm-bufio.c: In function 'alloc_buffer':include/linux/sched/mm.h:182:56: warning: 'noio_flag' may be used uninitialized in this function [-Wmaybe-uninitialized]
current->flags = (current->flags & ~PF_MEMALLOC_NOIO) | flags;
^The same warning happened earlier on linux-3.18 for MIPS and I did a workaround for that, but now it's come back.
gcc-7 and newer are apparently smart enough to figure this out, and other architectures don't show it, so the best I could come up with is to rework the caller slightly in a way that makes it obvious enough to all arm64 compilers what is happening here.
--- drivers/md/dm-bufio.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
drivers/md/dm-bufio.c +6 -10
@@ -386,9 +386,6 @@ static void __cache_size_refresh(void)static void *alloc_buffer_data (struct dm_bufio_client *c,gfp_t gfp_mask,enum data_mode *data_mode) { -unsigned noio_flag; -void *ptr; -if (c->block_size <=DM_BUFIO_BLOCK_SIZE_SLAB_LIMIT ) { *data_mode =DATA_MODE_SLAB ;return kmem_cache_alloc (DM_BUFIO_CACHE (c), gfp_mask);
@@ -412,16 +409,15 @@ static void *alloc_buffer_data(struct dm* all allocations done by this process (including pagetables) are done * as if GFP_NOIO was specified. */ +if (gfp_mask & __GFP_NORETRY) { +unsigned noio_flag =memalloc_noio_save (); +void *ptr =__vmalloc (c->block_size, gfp_mask,PAGE_KERNEL ); -if (gfp_mask & __GFP_NORETRY) - noio_flag =memalloc_noio_save (); - - ptr =__vmalloc (c->block_size, gfp_mask,PAGE_KERNEL ); - -if (gfp_mask & __GFP_NORETRY)memalloc_noio_restore (noio_flag); +return ptr; + } -return ptr; +return __vmalloc (c->block_size, gfp_mask,PAGE_KERNEL ); }/*
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/dm-bufio-avoid-false-positive-wmaybe-uninitialized-warning.patch