Message ID | 1404905415-9046-12-git-send-email-a.ryabinin@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 9 Jul 2014, Andrey Ryabinin wrote: > Remove static and add function declarations to mm/slab.h so they > could be used by kernel address sanitizer. Hmmm... This is allocator specific. At some future point it would be good to move error reporting to slab_common.c and use those from all allocators. > Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> > --- > mm/slab.h | 5 +++++ > mm/slub.c | 4 ++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/mm/slab.h b/mm/slab.h > index 1257ade..912af7f 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -339,5 +339,10 @@ static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node) > > void *slab_next(struct seq_file *m, void *p, loff_t *pos); > void slab_stop(struct seq_file *m, void *p); > +void slab_err(struct kmem_cache *s, struct page *page, > + const char *fmt, ...); > +void object_err(struct kmem_cache *s, struct page *page, > + u8 *object, char *reason); > + > > #endif /* MM_SLAB_H */ > diff --git a/mm/slub.c b/mm/slub.c > index 6641a8f..3bdd9ac 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -635,14 +635,14 @@ static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p) > dump_stack(); > } > > -static void object_err(struct kmem_cache *s, struct page *page, > +void object_err(struct kmem_cache *s, struct page *page, > u8 *object, char *reason) > { > slab_bug(s, "%s", reason); > print_trailer(s, page, object); > } > > -static void slab_err(struct kmem_cache *s, struct page *page, > +void slab_err(struct kmem_cache *s, struct page *page, > const char *fmt, ...) > { > va_list args; >
On 07/09/14 18:29, Christoph Lameter wrote: > On Wed, 9 Jul 2014, Andrey Ryabinin wrote: > >> Remove static and add function declarations to mm/slab.h so they >> could be used by kernel address sanitizer. > > Hmmm... This is allocator specific. At some future point it would be good > to move error reporting to slab_common.c and use those from all > allocators. > I could move declarations to kasan internals, but it will look ugly too. I also had an idea about unifying SLAB_DEBUG and SLUB_DEBUG at some future. I can't tell right now how hard it will be, but it seems doable.
On Thu, 10 Jul 2014, Andrey Ryabinin wrote: > On 07/09/14 18:29, Christoph Lameter wrote: > > On Wed, 9 Jul 2014, Andrey Ryabinin wrote: > > > >> Remove static and add function declarations to mm/slab.h so they > >> could be used by kernel address sanitizer. > > > > Hmmm... This is allocator specific. At some future point it would be good > > to move error reporting to slab_common.c and use those from all > > allocators. > > > > I could move declarations to kasan internals, but it will look ugly too. > I also had an idea about unifying SLAB_DEBUG and SLUB_DEBUG at some future. > I can't tell right now how hard it will be, but it seems doable. Well the simple approach is to first unify the reporting functions and then work the way up to higher levels. The reporting functions could also be more generalized to be more useful for multiple checking tools.
diff --git a/mm/slab.h b/mm/slab.h index 1257ade..912af7f 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -339,5 +339,10 @@ static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node) void *slab_next(struct seq_file *m, void *p, loff_t *pos); void slab_stop(struct seq_file *m, void *p); +void slab_err(struct kmem_cache *s, struct page *page, + const char *fmt, ...); +void object_err(struct kmem_cache *s, struct page *page, + u8 *object, char *reason); + #endif /* MM_SLAB_H */ diff --git a/mm/slub.c b/mm/slub.c index 6641a8f..3bdd9ac 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -635,14 +635,14 @@ static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p) dump_stack(); } -static void object_err(struct kmem_cache *s, struct page *page, +void object_err(struct kmem_cache *s, struct page *page, u8 *object, char *reason) { slab_bug(s, "%s", reason); print_trailer(s, page, object); } -static void slab_err(struct kmem_cache *s, struct page *page, +void slab_err(struct kmem_cache *s, struct page *page, const char *fmt, ...) { va_list args;
Remove static and add function declarations to mm/slab.h so they could be used by kernel address sanitizer. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- mm/slab.h | 5 +++++ mm/slub.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-)