Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f9b0e0a authored by David Keitel's avatar David Keitel Committed by Isaac J. Manjarres
Browse files

mm: slub: panic for object and slab errors



If the SLUB_DEBUG_PANIC_ON Kconfig option is
selected, also panic for object and slab
errors to allow capturing relevant debug
data.

Change-Id: Idc582ef48d3c0d866fa89cf8660ff0a5402f7e15
Signed-off-by: default avatarDavid Keitel <dkeitel@codeaurora.org>
Signed-off-by: default avatarPatrick Daly <pdaly@codeaurora.org>
[isaacm@codeaurora.org: Use IS_ENABLED() for better legibility]
Signed-off-by: default avatarIsaac J. Manjarres <isaacm@codeaurora.org>
parent 2e081913
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -686,11 +686,18 @@ static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p)
	dump_stack();
}

static void slab_panic(const char *cause)
{
	if (IS_ENABLED(CONFIG_SLUB_DEBUG_PANIC_ON))
		panic("%s\n", cause);
}

void object_err(struct kmem_cache *s, struct page *page,
			u8 *object, char *reason)
{
	slab_bug(s, "%s", reason);
	print_trailer(s, page, object);
	slab_panic(reason);
}

static __printf(3, 4) void slab_err(struct kmem_cache *s, struct page *page,
@@ -705,6 +712,7 @@ static __printf(3, 4) void slab_err(struct kmem_cache *s, struct page *page,
	slab_bug(s, "%s", buf);
	print_page_info(page);
	dump_stack();
	slab_panic("slab error");
}

static void init_object(struct kmem_cache *s, void *object, u8 val)
@@ -726,6 +734,7 @@ static void init_object(struct kmem_cache *s, void *object, u8 val)
static void restore_bytes(struct kmem_cache *s, char *message, u8 data,
						void *from, void *to)
{
	slab_panic("object poison overwritten");
	slab_fix(s, "Restoring 0x%p-0x%p=0x%x\n", from, to - 1, data);
	memset(from, data, to - from);
}