From: Vlastimil Babka <vbabka@suse.cz>
To: Oscar Salvador <osalvador@suse.de>,
Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Michal Hocko <mhocko@suse.com>, Marco Elver <elver@google.com>,
Andrey Konovalov <andreyknvl@gmail.com>,
Alexander Potapenko <glider@google.com>
Subject: Re: [PATCH v9 4/7] mm,page_owner: Implement the tracking of the stacks count
Date: Thu, 15 Feb 2024 12:08:53 +0100 [thread overview]
Message-ID: <9fc95f61-827f-40ee-a823-576cdcad7939@suse.cz> (raw)
In-Reply-To: <20240214170157.17530-5-osalvador@suse.de>
On 2/14/24 18:01, Oscar Salvador wrote:
> Implement {inc,dec}_stack_record_count() which increments or
> decrements on respective allocation and free operations, via
> __reset_page_owner() (free operation) and __set_page_owner() (alloc
> operation).
> Newly allocated stack_record structs will be added to the list stack_list
> via add_stack_record_to_list().
> Modifications on the list are protected via a spinlock with irqs
> disabled, since this code can also be reached from IRQ context.
>
> Signed-off-by: Oscar Salvador <osalvador@suse.de>
> Reviewed-by: Marco Elver <elver@google.com>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Note:
> +static void inc_stack_record_count(depot_stack_handle_t handle, gfp_t gfp_mask)
> +{
> + struct stack_record *stack_record = __stack_depot_get_stack_record(handle);
> +
> + if (!stack_record)
> + return;
> +
> + /*
> + * New stack_record's that do not use STACK_DEPOT_FLAG_GET start
> + * with REFCOUNT_SATURATED to catch spurious increments of their
> + * refcount.
> + * Since we do not use STACK_DEPOT_FLAG_GET API, let us
> + * set a refcount of 1 ourselves.
> + */
> + if (refcount_read(&stack_record->count) == REFCOUNT_SATURATED) {
> + int old = REFCOUNT_SATURATED;
> +
> + if (atomic_try_cmpxchg_relaxed(&stack_record->count.refs, &old, 1))
> + /* Add the new stack_record to our list */
> + add_stack_record_to_list(stack_record, gfp_mask);
Not returning here...
> + }
> + refcount_inc(&stack_record->count);
... means we'll increase the count to 2 on the first store, so there's a
bias. Which would be consistent with the failure and dummy stacks that also
start with a refcount of 1. But then the stack count reporting should
decrement by 1 to prevent confusion? (in the following patch). Imagine
somebody debugging an allocation stack where there are not so many of them,
but the allocation is large, and being sidetracked by an off-by-one error.
next prev parent reply other threads:[~2024-02-15 11:09 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 17:01 [PATCH v9 0/7] page_owner: print stacks and their outstanding allocations Oscar Salvador
2024-02-14 17:01 ` [PATCH v9 1/7] lib/stackdepot: Fix first entry having a 0-handle Oscar Salvador
2024-02-15 10:46 ` Vlastimil Babka
2024-02-14 17:01 ` [PATCH v9 2/7] lib/stackdepot: Move stack_record struct definition into the header Oscar Salvador
2024-02-15 8:16 ` Marco Elver
2024-02-15 8:22 ` Oscar Salvador
2024-02-15 9:30 ` Vlastimil Babka
2024-02-15 9:33 ` Marco Elver
2024-02-15 10:43 ` Vlastimil Babka
2024-02-14 17:01 ` [PATCH v9 3/7] mm,page_owner: Maintain own list of stack_records structs Oscar Salvador
2024-02-15 10:55 ` Vlastimil Babka
2024-02-15 12:52 ` Marco Elver
2024-02-14 17:01 ` [PATCH v9 4/7] mm,page_owner: Implement the tracking of the stacks count Oscar Salvador
2024-02-15 11:08 ` Vlastimil Babka [this message]
2024-02-15 11:57 ` Oscar Salvador
2024-02-14 17:01 ` [PATCH v9 5/7] mm,page_owner: Display all stacks and their count Oscar Salvador
2024-02-15 11:10 ` Vlastimil Babka
2024-02-15 11:58 ` Oscar Salvador
2024-02-14 17:01 ` [PATCH v9 6/7] mm,page_owner: Filter out stacks by a threshold Oscar Salvador
2024-02-15 11:12 ` Vlastimil Babka
2024-02-15 12:01 ` Oscar Salvador
2024-02-14 17:01 ` [PATCH v9 7/7] mm,page_owner: Update Documentation regarding page_owner_stacks Oscar Salvador
2024-02-15 11:13 ` Vlastimil Babka
2024-02-15 12:53 ` Marco Elver
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9fc95f61-827f-40ee-a823-576cdcad7939@suse.cz \
--to=vbabka@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=elver@google.com \
--cc=glider@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=osalvador@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox