Message ID | 20230804091136.1177-1-thunder.leizhen@huaweicloud.com (mailing list archive) |
---|---|
Headers | show |
Series | rcu: Dump memory object info if callback function is invalid | expand |
On Fri, Aug 04, 2023 at 05:11:30PM +0800, thunder.leizhen@huaweicloud.com wrote: > From: Zhen Lei <thunder.leizhen@huawei.com> > > 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 >
On 2023/8/5 1:31, Paul E. McKenney wrote: > On Fri, Aug 04, 2023 at 05:11:30PM +0800, thunder.leizhen@huaweicloud.com wrote: >> From: Zhen Lei <thunder.leizhen@huawei.com> >> >> 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. ;-) Yes, I also feel this snowball rolling bigger and bigger. Let me resend the two RCU-related patches that we've discussed OK. > > 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 >> > . >
From: Zhen Lei <thunder.leizhen@huawei.com> 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. 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(-)