Message ID | 20190909085339.25350-1-walter-zh.wu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/2] mm/page_ext: support to record the last stack of page | expand |
On 09.09.19 10:53, Walter Wu wrote: > KASAN will record last stack of page in order to help programmer > to see memory corruption caused by page. > > What is difference between page_owner and our patch? > page_owner records alloc stack of page, but our patch is to record > last stack(it may be alloc or free stack of page). > > Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> > --- > mm/page_ext.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/mm/page_ext.c b/mm/page_ext.c > index 5f5769c7db3b..7ca33dcd9ffa 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { > #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) > &page_idle_ops, > #endif > +#ifdef CONFIG_KASAN > + &page_stack_ops, > +#endif > }; > > static unsigned long total_usage; > Are you sure this patch compiles? t460s: ~/git/linux virtio-mem $ git grep page_stack_ops t460s: ~/git/linux virtio-mem $
On 9/9/19 10:53 AM, Walter Wu wrote: > KASAN will record last stack of page in order to help programmer > to see memory corruption caused by page. > > What is difference between page_owner and our patch? > page_owner records alloc stack of page, but our patch is to record > last stack(it may be alloc or free stack of page). > > Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> There's no point in separating this from patch 2 (and as David pointed out, doesn't compile). > --- > mm/page_ext.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/mm/page_ext.c b/mm/page_ext.c > index 5f5769c7db3b..7ca33dcd9ffa 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { > #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) > &page_idle_ops, > #endif > +#ifdef CONFIG_KASAN > + &page_stack_ops, > +#endif > }; > > static unsigned long total_usage; >
On Mon, 2019-09-09 at 12:57 +0200, David Hildenbrand wrote: > On 09.09.19 10:53, Walter Wu wrote: > > KASAN will record last stack of page in order to help programmer > > to see memory corruption caused by page. > > > > What is difference between page_owner and our patch? > > page_owner records alloc stack of page, but our patch is to record > > last stack(it may be alloc or free stack of page). > > > > Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> > > --- > > mm/page_ext.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/mm/page_ext.c b/mm/page_ext.c > > index 5f5769c7db3b..7ca33dcd9ffa 100644 > > --- a/mm/page_ext.c > > +++ b/mm/page_ext.c > > @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { > > #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) > > &page_idle_ops, > > #endif > > +#ifdef CONFIG_KASAN > > + &page_stack_ops, > > +#endif > > }; > > > > static unsigned long total_usage; > > > > Are you sure this patch compiles? > This is patchsets, it need another patch2. We have verified it by running KASAN UT on Qemu.
On Tue, Sep 10, 2019 at 09:07:49AM +0800, Walter Wu wrote: > On Mon, 2019-09-09 at 12:57 +0200, David Hildenbrand wrote: > > On 09.09.19 10:53, Walter Wu wrote: > > > KASAN will record last stack of page in order to help programmer > > > to see memory corruption caused by page. > > > > > > What is difference between page_owner and our patch? > > > page_owner records alloc stack of page, but our patch is to record > > > last stack(it may be alloc or free stack of page). > > > > > > Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> > > > --- > > > mm/page_ext.c | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/mm/page_ext.c b/mm/page_ext.c > > > index 5f5769c7db3b..7ca33dcd9ffa 100644 > > > --- a/mm/page_ext.c > > > +++ b/mm/page_ext.c > > > @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { > > > #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) > > > &page_idle_ops, > > > #endif > > > +#ifdef CONFIG_KASAN > > > + &page_stack_ops, > > > +#endif > > > }; > > > > > > static unsigned long total_usage; > > > > > > > Are you sure this patch compiles? > > > This is patchsets, it need another patch2. > We have verified it by running KASAN UT on Qemu. Any patchset must be bisectable: do not break anything in the middle of patchset.
On Tue, 2019-09-10 at 12:31 +0300, Kirill A. Shutemov wrote: > On Tue, Sep 10, 2019 at 09:07:49AM +0800, Walter Wu wrote: > > On Mon, 2019-09-09 at 12:57 +0200, David Hildenbrand wrote: > > > On 09.09.19 10:53, Walter Wu wrote: > > > > KASAN will record last stack of page in order to help programmer > > > > to see memory corruption caused by page. > > > > > > > > What is difference between page_owner and our patch? > > > > page_owner records alloc stack of page, but our patch is to record > > > > last stack(it may be alloc or free stack of page). > > > > > > > > Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> > > > > --- > > > > mm/page_ext.c | 3 +++ > > > > 1 file changed, 3 insertions(+) > > > > > > > > diff --git a/mm/page_ext.c b/mm/page_ext.c > > > > index 5f5769c7db3b..7ca33dcd9ffa 100644 > > > > --- a/mm/page_ext.c > > > > +++ b/mm/page_ext.c > > > > @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { > > > > #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) > > > > &page_idle_ops, > > > > #endif > > > > +#ifdef CONFIG_KASAN > > > > + &page_stack_ops, > > > > +#endif > > > > }; > > > > > > > > static unsigned long total_usage; > > > > > > > > > > Are you sure this patch compiles? > > > > > This is patchsets, it need another patch2. > > We have verified it by running KASAN UT on Qemu. > > Any patchset must be bisectable: do not break anything in the middle of > patchset. > Thanks your reminder. I should explain complete message at commit log. Our patchsets is below: https://lkml.org/lkml/2019/9/9/104 https://lkml.org/lkml/2019/9/9/123
diff --git a/mm/page_ext.c b/mm/page_ext.c index 5f5769c7db3b..7ca33dcd9ffa 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -65,6 +65,9 @@ static struct page_ext_operations *page_ext_ops[] = { #if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT) &page_idle_ops, #endif +#ifdef CONFIG_KASAN + &page_stack_ops, +#endif }; static unsigned long total_usage;
KASAN will record last stack of page in order to help programmer to see memory corruption caused by page. What is difference between page_owner and our patch? page_owner records alloc stack of page, but our patch is to record last stack(it may be alloc or free stack of page). Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com> --- mm/page_ext.c | 3 +++ 1 file changed, 3 insertions(+)