Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932571AbbKRJxW (ORCPT ); Wed, 18 Nov 2015 04:53:22 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:62620 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932460AbbKRJxR (ORCPT ); Wed, 18 Nov 2015 04:53:17 -0500 From: Arnd Bergmann To: linaro-kernel@lists.linaro.org Cc: Andrew Morton , Yang Shi , tj@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] writeback: initialize m_dirty to avoid compile warning Date: Wed, 18 Nov 2015 10:53:08 +0100 Message-ID: <9389290.7xT8jb43sX@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <20151117153855.99d2acd0568d146c29defda5@linux-foundation.org> References: <1447439201-32009-1-git-send-email-yang.shi@linaro.org> <20151117153855.99d2acd0568d146c29defda5@linux-foundation.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:CRk3KQjn71/DgAEehue2/a87j+WbufgdqKx40FxQyJNXl2lmcnO 3KHq9M+PYRzVNZoD1im0HcZtkBqqOp6Z4dSeqw2Z86bWp8RarncwFcvkZ4Pxf8DVTjSIAlX 74l4T8ZYcbeQNKY4at3HAm/blUob9CU6k050mcP6vo01Y5/ivAPitQRaZkihMCzHg+vMqIv F2AOhJ9wcPyE5IbMG00+A== X-UI-Out-Filterresults: notjunk:1;V01:K0:f4kpWRQzQzI=:FLMu8PxpVtaGIMMSga/dHN ty9bFk4s4I5PkJapTYGZEoUcH7hh7qU8iFOaG7ivbLd2HQl/jw6s9WjcOq/5/Exio4Fn505lt 4l3V+BMEXJ4wJLNuMDsEpi++Zk+cV66t19rjLRBEaIruR7rZa2l8MGy0Rc0a+Co1tG5n2O0Aj 82JEXRj/NSmbRnkLJpfLh6RH/DjOFGF3kUPPqr9DEC9RmnfCvtDT1I+6SJyIuKMUOynPdmSlG xSXB73aOfOb6hdIyx80e/JJQudoaFLN6k9usTJHkUfFEwKCifmynthq0UP+zKEpum2ITRcNrD NIa7XoZ6BXYpt3SkZlP7dh4vE0+NMiLSIVceNVPP05N1nBjknq3KkM6DCbd0ZSY0OLJyPk8hW QQIRJdTQXXbPPnTccmZqYY072SiIJVfjd1lv2KB22hMEDTlQNtYGUgyKgLvGccKvyCa21SgZJ YJPAXJ/88u+4KfS73BxVVrzXD62AzEyQkrMT9Ca/YcEz/qWQ0oSqLrExfd5eIpbPtqfujteiL YV10KHz8I3yuoWF2mIPYXa4Ln+Bq6iFkx52ny6VuzliqawbV6yOL0gm/cd9nBEjNscfiLt86y yb4LvTQflKbzIMpEAZNqAg/XFLt1+Uc5Agt396mYYadc1ABmT0O4KW2w51vIl7pgOLnC25b6a 0n7jwS7eUHfvPr3yAuANaEK1Zz+R+kCQ7jFj57G0QeawGnJssx+wEHzrUWhYwpGtrCEd0T2wM Zw1/on84hASl0AyF Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2361 Lines: 55 On Tuesday 17 November 2015 15:38:55 Andrew Morton wrote: > On Fri, 13 Nov 2015 10:26:41 -0800 Yang Shi wrote: > > > When building kernel with gcc 5.2, the below warning is raised: > > > > mm/page-writeback.c: In function 'balance_dirty_pages.isra.10': > > mm/page-writeback.c:1545:17: warning: 'm_dirty' may be used uninitialized in this function [-Wmaybe-uninitialized] > > unsigned long m_dirty, m_thresh, m_bg_thresh; > > > > The m_dirty{thresh, bg_thresh} are initialized in the block of "if (mdtc)", > > so if mdts is null, they won't be initialized before being used. > > Initialize m_dirty to zero, also initialize m_thresh and m_bg_thresh to keep > > consistency. > > > > They are used later by if condition: > > !mdtc || m_dirty <= dirty_freerun_ceiling(m_thresh, m_bg_thresh) > > > > If mdtc is null, dirty_freerun_ceiling will not be called at all, so the > > initialization will not change any behavior other than just ceasing the compile > > warning. > > Geeze I hate that warning. gcc really could be a bit smarter about it > and this is such a case. > > > --- a/mm/page-writeback.c > > +++ b/mm/page-writeback.c > > @@ -1542,7 +1542,7 @@ static void balance_dirty_pages(struct address_space *mapping, > > for (;;) { > > unsigned long now = jiffies; > > unsigned long dirty, thresh, bg_thresh; > > - unsigned long m_dirty, m_thresh, m_bg_thresh; > > + unsigned long m_dirty = 0, m_thresh = 0, m_bg_thresh = 0; > > > > /* > > * Unstable writes are a feature of certain networked > > Adding runtime overhead to suppress a compile-time warning is Just > Wrong. > > With gcc-4.4.4 the above patch actually reduces page-writeback.o's > .text by 36 bytes, lol. With gcc-4.8.4 the patch saves 19 bytes. No > idea what's going on there... I've done tons of build tests and never got the warning for the variables other than m_dirty, and that one also just with very few configurations (e.g. ARM omap2plus_defconfig). How about initializing only m_dirty but not the others? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/