Hi, Aureau
Thank you for the fix.

On Thu, Aug 29, 2024 at 5:56 PM <devel-requ...@lists.crash-utility.osci.io>
wrote:

> Date: Thu, 29 Aug 2024 09:15:36 +0000
> From: "Aureau, Georges (Kernel Tools ERT)" <georges.aur...@hpe.com>
> Subject: [Crash-utility][PATCH] “kmem address” not working properly
>         when redzone is enabled
> To: "devel@lists.crash-utility.osci.io"
>         <devel@lists.crash-utility.osci.io>
> Message-ID: <sj0pr84mb1482e72f9e168b3b0ce885c89f...@sj0pr84mb1482.namp
>         RD84.PROD.OUTLOOK.COM>
> Content-Type: text/plain; charset="Windows-1252"
>
> Crash “kmem address” not working properly when redzone is enabled.
>
> When "slub_debug" is enabled with redzoning, "kmem address" does not work
> properly.
> The "red_left_pad" member within "struct kmem_cache" is currently an
> "unsigned int",
> it used to be an "int", but it never was a "long", hence "red_left_pad" in
> do_slab_slub()
> was not initialized properly. This "red_left_pad" issue resulted in
> reporting free objects
> as "[ALLOCATED]", and in reporting bogus object addresses when using "set
> redzone off".
>
>
Can you help add the result of the 'kmem address' command here? We can
clearly see what error it is.

And also please add the kernel commit to patch log:
kernel commit 2ca6d39b3102 ("slub: make ->red_left_pad unsigned int")

Signed-off-by: Georges Aureau <georges.aur...@hpe.com>
> --
> diff --git a/memory.c b/memory.c
> index a74ebaf..967a9cf 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -19637,7 +19637,8 @@ do_slab_slub(struct meminfo *si, int verbose)
>         int i, free_objects, cpu_slab, is_free, node;
>         ulong p, q;
>  #define SLAB_RED_ZONE 0x00000400UL
> -       ulong flags, red_left_pad;
> +       ulong flags;
> +       uint red_left_pad;
>
>         if (!si->slab) {
>                 if (CRASHDEBUG(1))
> @@ -19727,7 +19728,7 @@ do_slab_slub(struct meminfo *si, int verbose)
>         if (VALID_MEMBER(kmem_cache_red_left_pad)) {
>                 flags = ULONG(si->cache_buf + OFFSET(kmem_cache_flags));
>                 if (flags & SLAB_RED_ZONE)
> -                       red_left_pad = ULONG(si->cache_buf +
> OFFSET(kmem_cache_red_left_pad));
> +                       red_left_pad = UINT(si->cache_buf +
> OFFSET(kmem_cache_red_left_pad));
>         }
>
>
This change looks good to me, but I still have a question:
I can not reproduce the current issue, how did you reproduce this one? Can
you help list the steps to reproduce?


Thanks
Lianbo


>         for (p = vaddr; p < vaddr + objects * si->size; p += si->size) {
>
> ------------------------------
>
--
Crash-utility mailing list -- devel@lists.crash-utility.osci.io
To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to