Re: [RFC, DEBUGGING 1/2] mm: pass NR_FILE_PAGES/NR_SHMEM into node_page_state

From: Arnd Bergmann
Date: Thu Jun 23 2016 - 09:15:52 EST


On Thursday, June 23, 2016 11:41:24 AM CEST Mel Gorman wrote:
> On Thu, Jun 23, 2016 at 12:05:17PM +0200, Arnd Bergmann wrote:
> > I see some new warnings from a recent mm change:
> >
> > mm/filemap.c: In function '__delete_from_page_cache':
> > include/linux/vmstat.h:116:2: error: array subscript is above array bounds [-Werror=array-bounds]
> > atomic_long_add(x, &zone->vm_stat[item]);
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > include/linux/vmstat.h:116:35: error: array subscript is above array bounds [-Werror=array-bounds]
> > atomic_long_add(x, &zone->vm_stat[item]);
> > ~~~~~~~~~~~~~^~~~~~
> > include/linux/vmstat.h:116:35: error: array subscript is above array bounds [-Werror=array-bounds]
> > include/linux/vmstat.h:117:2: error: array subscript is above array bounds [-Werror=array-bounds]
> >
> > Looking deeper into it, I find that we pass the wrong enum
> > into some functions after the type for the symbol has changed.
> >
> > This changes the code to use the other function for those that
> > are using the incorrect type. I've done this blindly just going
> > by warnings I got from a debug patch I did for this, so it's likely
> > that some cases are more subtle and need another change, so please
> > treat this as a bug-report rather than a patch for applying.
> >
>
> I have an alternative fix for this in a private tree. For now, I've asked
> Andrew to withdraw the series entirely as there are non-trivial collisions
> with OOM detection rework and huge page support for tmpfs. It'll be easier
> and safer to resolve this outside of mmotm as it'll require a full round
> of testing which takes 3-4 days.

Ok. I've done a new version of my debug patch now, will follow up here
so you can do some testing on top of that as well if you like. We probably
don't want to apply my patch for the type checking, but you might find it
useful for your own testing.

Arnd