diff mbox series

[RFC] mm: record context on page->mapping

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

Commit Message

Zhaoyang Huang Feb. 10, 2022, 9:01 a.m. UTC
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(+)

Comments

Zhaoyang Huang Feb. 10, 2022, 10 a.m. UTC | #1
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
>
Matthew Wilcox Feb. 10, 2022, 1:18 p.m. UTC | #2
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 mbox series

Patch

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;
 }
 
 /*