lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 18 Dec 2009 10:35:59 +0900 (JST)
From:	KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
To:	Wu Fengguang <fengguang.wu@...el.com>
Cc:	kosaki.motohiro@...fujitsu.com,
	Americo Wang <xiyou.wangcong@...il.com>,
	Mel Gorman <mel@....ul.ie>, Alex Chiang <achiang@...com>,
	"akpm@...ux-foundation.org" <akpm@...ux-foundation.org>,
	"Li, Haicheng" <haicheng.li@...el.com>,
	Randy Dunlap <randy.dunlap@...cle.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"linux-mm@...ck.org" <linux-mm@...ck.org>,
	Andi Kleen <andi@...stfloor.org>, Ingo Molnar <mingo@...e.hu>,
	Christoph Lameter <cl@...ux-foundation.org>,
	Rik van Riel <riel@...hat.com>
Subject: Re: [PATCH v2] mm: introduce dump_page() and print symbolic flag names

> On Wed, Dec 16, 2009 at 11:35:13PM +0800, Américo Wang wrote:
> > On Wed, Dec 16, 2009 at 08:33:10PM +0800, Wu Fengguang wrote:
> > >On Wed, Dec 16, 2009 at 08:26:40PM +0800, Wu Fengguang wrote:
> > >> - introduce dump_page() to print the page info for debugging some error condition.
> > >> - convert three mm users: bad_page(), print_bad_pte() and memory offline failure. 
> > >> - print an extra field: the symbolic names of page->flags
> > >> 
> > >> Example dump_page() output:
> > >> 
> > >> [  157.521694] page:ffffea0000a7cba8 count:2 mapcount:1
> > >> mapping:ffff88001c901791 index:147
> > >                                 ~~~ this is in fact 0x147
> > >
> > >The index value may sometimes be misread as decimal number, shall this
> > >be fixed by adding a "0x" prefix?
> > 
> > 
> > Using '%#x' will do.
> 
> Thanks, here is the updated patch.
> ---
> mm: introduce dump_page()
> 
> - introduce dump_page() to print the page info for debugging some error condition.
> - convert three mm users: bad_page(), print_bad_pte() and memory offline failure. 
> - print an extra field: the symbolic names of page->flags
> 
> Example dump_page() output:
> 
> [  157.521694] page:ffffea0000a7cba8 count:2 mapcount:1 mapping:ffff88001c901791 index:0x147
> [  157.525570] page flags: 100000000100068(uptodate|lru|active|swapbacked)
> 
> CC: Ingo Molnar <mingo@...e.hu> 
> CC: Alex Chiang <achiang@...com>
> CC: Rik van Riel <riel@...hat.com>
> CC: Andi Kleen <andi@...stfloor.org> 
> CC: Mel Gorman <mel@...ux.vnet.ibm.com> 
> CC: Christoph Lameter <cl@...ux-foundation.org> 
> Signed-off-by: Wu Fengguang <fengguang.wu@...el.com>
> ---
>  include/linux/mm.h  |    2 +
>  mm/memory.c         |    8 +---
>  mm/memory_hotplug.c |    6 +--
>  mm/page_alloc.c     |   83 +++++++++++++++++++++++++++++++++++++++---
>  4 files changed, 86 insertions(+), 13 deletions(-)
> 
> --- linux-mm.orig/mm/page_alloc.c	2009-12-11 10:01:25.000000000 +0800
> +++ linux-mm/mm/page_alloc.c	2009-12-16 20:33:35.000000000 +0800
> @@ -49,6 +49,7 @@
>  #include <linux/debugobjects.h>
>  #include <linux/kmemleak.h>
>  #include <trace/events/kmem.h>
> +#include <linux/ftrace_event.h>
>  
>  #include <asm/tlbflush.h>
>  #include <asm/div64.h>
> @@ -262,10 +263,7 @@ static void bad_page(struct page *page)
>  
>  	printk(KERN_ALERT "BUG: Bad page state in process %s  pfn:%05lx\n",
>  		current->comm, page_to_pfn(page));
> -	printk(KERN_ALERT
> -		"page:%p flags:%p count:%d mapcount:%d mapping:%p index:%lx\n",
> -		page, (void *)page->flags, page_count(page),
> -		page_mapcount(page), page->mapping, page->index);
> +	dump_page(page);
>  
>  	dump_stack();
>  out:
> @@ -5106,3 +5104,80 @@ bool is_free_buddy_page(struct page *pag
>  	return order < MAX_ORDER;
>  }
>  #endif
> +
> +static struct trace_print_flags pageflag_names[] = {
> +	{1UL << PG_locked,		"locked"	},
> +	{1UL << PG_error,		"error"		},
> +	{1UL << PG_referenced,		"referenced"	},
> +	{1UL << PG_uptodate,		"uptodate"	},
> +	{1UL << PG_dirty,		"dirty"		},
> +	{1UL << PG_lru,			"lru"		},
> +	{1UL << PG_active,		"active"	},
> +	{1UL << PG_slab,		"slab"		},
> +	{1UL << PG_owner_priv_1,	"owner_priv_1"	},
> +	{1UL << PG_arch_1,		"arch_1"	},
> +	{1UL << PG_reserved,		"reserved"	},
> +	{1UL << PG_private,		"private"	},
> +	{1UL << PG_private_2,		"private_2"	},
> +	{1UL << PG_writeback,		"writeback"	},
> +#ifdef CONFIG_PAGEFLAGS_EXTENDED
> +	{1UL << PG_head,		"head"		},
> +	{1UL << PG_tail,		"tail"		},
> +#else
> +	{1UL << PG_compound,		"compound"	},
> +#endif
> +	{1UL << PG_swapcache,		"swapcache"	},
> +	{1UL << PG_mappedtodisk,	"mappedtodisk"	},
> +	{1UL << PG_reclaim,		"reclaim"	},
> +	{1UL << PG_buddy,		"buddy"		},
> +	{1UL << PG_swapbacked,		"swapbacked"	},
> +	{1UL << PG_unevictable,		"unevictable"	},
> +#ifdef CONFIG_MMU
> +	{1UL << PG_mlocked,		"mlocked"	},
> +#endif
> +#ifdef CONFIG_ARCH_USES_PG_UNCACHED
> +	{1UL << PG_uncached,		"uncached"	},
> +#endif
> +#ifdef CONFIG_MEMORY_FAILURE
> +	{1UL << PG_hwpoison,		"hwpoison"	},
> +#endif
> +	{-1UL,				NULL		},
> +};
> +
> +static void dump_page_flags(unsigned long flags)
> +{
> +	const char *delim = "";
> +	unsigned long mask;
> +	int i;
> +
> +	printk(KERN_ALERT "page flags: %lx(", flags);

nit.
Now, you append 0x prefix to index. why don't you appent 0x prefix to this?
I mean we have to keep consist prefix printing rule in the same printk.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ