Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756585AbbKRRcd (ORCPT ); Wed, 18 Nov 2015 12:32:33 -0500 Received: from mail-pa0-f47.google.com ([209.85.220.47]:34139 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755238AbbKRRca (ORCPT ); Wed, 18 Nov 2015 12:32:30 -0500 Message-ID: <564CB62B.4070501@linaro.org> Date: Wed, 18 Nov 2015 09:32:27 -0800 From: "Shi, Yang" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Arnd Bergmann , linaro-kernel@lists.linaro.org CC: Andrew Morton , tj@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] writeback: initialize m_dirty to avoid compile warning References: <1447439201-32009-1-git-send-email-yang.shi@linaro.org> <20151117153855.99d2acd0568d146c29defda5@linux-foundation.org> <9389290.7xT8jb43sX@wuerfel> In-Reply-To: <9389290.7xT8jb43sX@wuerfel> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2678 Lines: 69 On 11/18/2015 1:53 AM, Arnd Bergmann wrote: > 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). Yes, I just got the warning for m_dirty too. Just initialize m_thresh and m_bg_thresh to keep consistency (not sure if it is necessary). And, I'm a little bit confused why gcc just reports m_dirty but ignore others. > > How about initializing only m_dirty but not the others? Fine to me. Thanks, Yang > > 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/