[PATCH 3/7] struct page: add field for vm_struct

J Freyensee why2jjj.linux at gmail.com
Mon Mar 5 20:31:14 UTC 2018


Reviewed-by: Jay Freyensee <why2jjj.linux at gmail.com>

On 2/28/18 12:06 PM, Igor Stoppa wrote:
> When a page is used for virtual memory, it is often necessary to obtain
> a handler to the corresponding vm_struct, which refers to the virtually
> continuous area generated when invoking vmalloc.
>
> The struct page has a "mapping" field, which can be re-used, to store a
> pointer to the parent area.
>
> This will avoid more expensive searches, later on.
>
> Signed-off-by: Igor Stoppa <igor.stoppa at huawei.com>
> ---
>   include/linux/mm_types.h | 1 +
>   mm/vmalloc.c             | 2 ++
>   2 files changed, 3 insertions(+)
>
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index fd1af6b9591d..c3a4825e10c0 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -84,6 +84,7 @@ struct page {
>   		void *s_mem;			/* slab first object */
>   		atomic_t compound_mapcount;	/* first tail page */
>   		/* page_deferred_list().next	 -- second tail page */
> +		struct vm_struct *area;
>   	};
>   
>   	/* Second double word */
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index ebff729cc956..61a1ca22b0f6 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -1536,6 +1536,7 @@ static void __vunmap(const void *addr, int deallocate_pages)
>   			struct page *page = area->pages[i];
>   
>   			BUG_ON(!page);
> +			page->area = NULL;
>   			__free_pages(page, 0);
>   		}
>   
> @@ -1705,6 +1706,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
>   			area->nr_pages = i;
>   			goto fail;
>   		}
> +		page->area = area;
>   		area->pages[i] = page;
>   		if (gfpflags_allow_blocking(gfp_mask|highmem_mask))
>   			cond_resched();

--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the Linux-security-module-archive mailing list