On Tuesday 17 November 2015 15:38:55 Andrew Morton wrote: > On Fri, 13 Nov 2015 10:26:41 -0800 Yang Shi <yang.shi@xxxxxxxxxx> 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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>