Re: [PATCH v6 0/5] rcu: Dump memory object info if callback function is invalid

From: Paul E. McKenney
Date: Fri Aug 04 2023 - 13:31:16 EST


On Fri, Aug 04, 2023 at 05:11:30PM +0800, thunder.leizhen@xxxxxxxxxxxxxxx wrote:
> From: Zhen Lei <thunder.leizhen@xxxxxxxxxx>
>
> v5 --> v6:
> 1. Use print_hex_dump() to dump the memory of slab object.
> 2. Add a new dump prefix DUMP_PREFIX_ADDRESS_LOW16
> 3. Minimize the output width of the offset
>
> v4 --> v5:
> 1. Add Reviewed-by Acked-by for patch 1/3
> 2. Add patch 3/3:
> mm: Dump the memory of slab object in kmem_dump_obj()
>
> v3 --> v4:
> 1. Remove kmem_valid_obj() and convert kmem_dump_obj() to work the same way
> as vmalloc_dump_obj().
> 2. In kernel/rcu/rcu.h
> -#include <linux/mm.h>
> +#include <linux/slab.h>
>
> v2 --> v3:
> 1. I made statistics about the source of 'rhp'. kmem_valid_obj() accounts for
> more than 97.5%, and vmalloc accounts for less than 1%. So change call
> mem_dump_obj() to call kmem_dump_obj() can meet debugging requirements and
> avoid the potential deadlock risk of vmalloc_dump_obj().
> - mem_dump_obj(rhp);
> + if (kmem_valid_obj(rhp))
> + kmem_dump_obj(rhp);
>
> The discussion about vmap_area_lock deadlock in v2:
> https://lkml.org/lkml/2022/11/11/493
>
> 2. Provide static inline empty functions for kmem_valid_obj() and kmem_dump_obj()
> when CONFIG_PRINTK=n.
>
> v1 --> v2:
> 1. Remove condition "(unsigned long)rhp->func & 0x3", it have problems on x86.
> 2. Paul E. McKenney helped me update the commit message, thanks.

I would be happy to take the patch that Matthew and Vlastimil are happy
with, and also the one against RCU. But unless you tell me otherwise,
I will assume that you would prefer me to wait until the entire series
is ready. The best way to tell me otherwise is of course to resend just
those two patches in their own series. ;-)

Thanx, Paul

> Zhen Lei (5):
> hexdump: add a new dump prefix DUMP_PREFIX_ADDRESS_LOW16
> hexdump: minimize the output width of the offset
> mm: Remove kmem_valid_obj()
> mm: Dump the memory of slab object in kmem_dump_obj()
> rcu: Dump memory object info if callback function is invalid
>
> include/linux/printk.h | 1 +
> include/linux/slab.h | 5 ++--
> kernel/rcu/rcu.h | 7 +++++
> kernel/rcu/srcutiny.c | 1 +
> kernel/rcu/srcutree.c | 1 +
> kernel/rcu/tasks.h | 1 +
> kernel/rcu/tiny.c | 1 +
> kernel/rcu/tree.c | 1 +
> lib/hexdump.c | 17 +++++++++--
> mm/slab_common.c | 68 ++++++++++++++++++++++--------------------
> mm/util.c | 4 +--
> 11 files changed, 67 insertions(+), 40 deletions(-)
>
> --
> 2.34.1
>