Message ID | 1644483715-7981-1-git-send-email-huangzhaoyang@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [RFC] mm: record context on page->mapping | expand |
There are some places to modify as 'free_pages_check' for the formal version, just RFC here to see if it is doable? On Thu, Feb 10, 2022 at 5:02 PM Huangzhaoyang <huangzhaoyang@gmail.com> wrote: > > From: Zhaoyang Huang <zhaoyang.huang@unisoc.com> > > Since page->mapping is vacant in the pages which used by kernel(drivers etc) > Have it record current context to help tracking the page's owner in system > memory dump. > > Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com> > --- > mm/page_alloc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index c595274..2757d10 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2430,6 +2430,8 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags > set_page_pfmemalloc(page); > else > clear_page_pfmemalloc(page); > + > + page->mapping = (struct address_space *)current; > } > > /* > -- > 1.9.1 >
On Thu, Feb 10, 2022 at 05:01:55PM +0800, Huangzhaoyang wrote: > From: Zhaoyang Huang <zhaoyang.huang@unisoc.com> > > Since page->mapping is vacant in the pages which used by kernel(drivers etc) > Have it record current context to help tracking the page's owner in system > memory dump. > > Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com> > --- > mm/page_alloc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index c595274..2757d10 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2430,6 +2430,8 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags > set_page_pfmemalloc(page); > else > clear_page_pfmemalloc(page); > + > + page->mapping = (struct address_space *)current; > } You didn't actually try this patch, did you? See page_expected_state(). Or, I don't know, just boot it.
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c595274..2757d10 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2430,6 +2430,8 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags set_page_pfmemalloc(page); else clear_page_pfmemalloc(page); + + page->mapping = (struct address_space *)current; } /*