Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1638925

[Patch v3] mm/vmscan: fix unsequenced modification and access warning

Path csiph.com!weretis.net!feeder4.news.weretis.net!feeds.phibee-telecom.net!news.panservice.it!bofh.it!news.nic.it!robomod
From Nick Desaulniers <nick.desaulniers@gmail.com>
Newsgroups linux.kernel
Subject [Patch v3] mm/vmscan: fix unsequenced modification and access warning
Date Wed, 10 May 2017 17:50:01 +0200
Message-ID <tFC2d-2vc-15@gated-at.bofh.it> (permalink)
References <tFw6t-7lp-7@gated-at.bofh.it>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MfveW9Kgk6nqfZ1CPrwD/wU4dhQYVI7IlB5EkrIEgZY=; b=TbkAgJ1061D2GmnDV3BwC3rqyqlKnNU83n3mMBqj2xKuSygGXPdvtcrQCvO1/3+p39 LZBE5sUuL99QU7wwdsCALBTTmaZZqbrlFLsojs0riF+ou0N4rY1GqWhySH96rTOEEQ4c ivA6KJpM0WcZbz2p3Wa2C/sPJcQkEkNdP9x/1Mbo79Ym/Xpk6m2tIh7wyXwqNpp7cA+y T6PTHQdyh/5FyIL27m/Xt7paROI2/ihUOut7OYmLo4HCdfIGxnioip81vQHfzxFifS6+ 7V/Yz1l87OV9nS7BCWuqFqHo/BEmorGA9fMmFjXkc4ztjdBYZZ6qhIDQK8pYToGDMRgK R1JA==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MfveW9Kgk6nqfZ1CPrwD/wU4dhQYVI7IlB5EkrIEgZY=; b=avBaSLVO4J43n06veZQSOnYAz2iXh/6mY2nn1hDO6dKeUUHRNVEsF9TWuXGfbvT1f7 FeOfibx/0D61PROgrhMRrCRrP1u4xRFeE6dGaMPp6sUVTisahM5P6yWq4utOtVZulgsN DH8OklqhHW7AnRSU4hAulEEb9Vqd32mTO6HGogvwHu5imT3OYZiaK6Xw7DrrzDslRQGb Z8Vy9nqluNGIB/NGtWUOf+jmt14Mml4vGJ2+QKOwVJLpRQsJyvxhXk3R5rPILfk0ayrW uuUzyaOXwPEY6CUzDMVA+uMRQZrasv6sLUBLo/aTcFyCNNPPtPfgDVLa/1Le2KDDG5QF lX4Q==
X-Gm-Message-State AODbwcC8Qe/VXq7XSE/253lOBz6dLV+vw+VKtONmQeQKkkMZC5hQWN8e xo5u7nTu7Q56Rg==
X-Received by 10.99.149.94 with SMTP id t30mr7248245pgn.152.1494430842294; Wed, 10 May 2017 08:40:42 -0700 (PDT)
X-Mailer git-send-email 2.11.0
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 82
Organization linux.* mail to news gateway
X-Original-Cc akpm@linux-foundation.org, hannes@cmpxchg.org, mgorman@techsingularity.net, mhocko@suse.com, vbabka@suse.cz, minchan@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Nick Desaulniers <nick.desaulniers@gmail.com>
X-Original-Date Wed, 10 May 2017 08:40:30 -0700
X-Original-Message-ID <20170510154030.10720-1-nick.desaulniers@gmail.com>
X-Original-References <20170510092505.GH31466@dhcp22.suse.cz>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1638925

Show key headers only | View raw


Clang and its -Wunsequenced emits a warning

mm/vmscan.c:2961:25: error: unsequenced modification and access to
'gfp_mask' [-Wunsequenced]
                .gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
                                      ^

While it is not clear to me whether the initialization code violates the
specification (6.7.8 par 19 (ISO/IEC 9899) looks like it disagrees) the
code is quite confusing and worth cleaning up anyway. Fix this by
reusing sc.gfp_mask rather than the updated input gfp_mask parameter.

Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
---
Changes in v3:
- changed commit message
- added previous ack

Will file a bug with llvm later today

 mm/vmscan.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 4e7ed65842af..d32c42d17935 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2958,7 +2958,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
 	unsigned long nr_reclaimed;
 	struct scan_control sc = {
 		.nr_to_reclaim = SWAP_CLUSTER_MAX,
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = current_gfp_context(gfp_mask),
 		.reclaim_idx = gfp_zone(gfp_mask),
 		.order = order,
 		.nodemask = nodemask,
@@ -2973,12 +2973,12 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
 	 * 1 is returned so that the page allocator does not OOM kill at this
 	 * point.
 	 */
-	if (throttle_direct_reclaim(gfp_mask, zonelist, nodemask))
+	if (throttle_direct_reclaim(sc.gfp_mask, zonelist, nodemask))
 		return 1;
 
 	trace_mm_vmscan_direct_reclaim_begin(order,
 				sc.may_writepage,
-				gfp_mask,
+				sc.gfp_mask,
 				sc.reclaim_idx);
 
 	nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
@@ -3763,16 +3763,15 @@ static int __node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned in
 	const unsigned long nr_pages = 1 << order;
 	struct task_struct *p = current;
 	struct reclaim_state reclaim_state;
-	int classzone_idx = gfp_zone(gfp_mask);
 	struct scan_control sc = {
 		.nr_to_reclaim = max(nr_pages, SWAP_CLUSTER_MAX),
-		.gfp_mask = (gfp_mask = current_gfp_context(gfp_mask)),
+		.gfp_mask = current_gfp_context(gfp_mask),
 		.order = order,
 		.priority = NODE_RECLAIM_PRIORITY,
 		.may_writepage = !!(node_reclaim_mode & RECLAIM_WRITE),
 		.may_unmap = !!(node_reclaim_mode & RECLAIM_UNMAP),
 		.may_swap = 1,
-		.reclaim_idx = classzone_idx,
+		.reclaim_idx = gfp_zone(gfp_mask),
 	};
 
 	cond_resched();
@@ -3782,7 +3781,7 @@ static int __node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned in
 	 * and RECLAIM_UNMAP.
 	 */
 	p->flags |= PF_MEMALLOC | PF_SWAPWRITE;
-	lockdep_set_current_reclaim_state(gfp_mask);
+	lockdep_set_current_reclaim_state(sc.gfp_mask);
 	reclaim_state.reclaimed_slab = 0;
 	p->reclaim_state = &reclaim_state;
 
-- 
2.11.0

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH] mm/vmscan: fix unsequenced modification and access warning Nick Desaulniers <nick.desaulniers@gmail.com> - 2017-05-10 09:00 +0200
  Re: [PATCH] mm/vmscan: fix unsequenced modification and access  warning Michal Hocko <mhocko@kernel.org> - 2017-05-10 09:20 +0200
    [Patch v2] mm/vmscan: fix unsequenced modification and access warning Nick Desaulniers <nick.desaulniers@gmail.com> - 2017-05-10 10:30 +0200
      Re: [Patch v2] mm/vmscan: fix unsequenced modification and access  warning Michal Hocko <mhocko@kernel.org> - 2017-05-10 10:40 +0200
    Re: [PATCH] mm/vmscan: fix unsequenced modification and access  warning Nick Desaulniers <nick.desaulniers@gmail.com> - 2017-05-10 10:50 +0200
      Re: [PATCH] mm/vmscan: fix unsequenced modification and access  warning Michal Hocko <mhocko@kernel.org> - 2017-05-10 11:30 +0200
        [Patch v3] mm/vmscan: fix unsequenced modification and access warning Nick Desaulniers <nick.desaulniers@gmail.com> - 2017-05-10 17:50 +0200

csiph-web