git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "ノウラ | Flare" <nouraellm@gmail.com>
Cc: "Jeff King" <peff@peff.net>,
	"ノウラ | Flare via GitGitGadget" <gitgitgadget@gmail.com>,
	git@vger.kernel.org
Subject: Re: [PATCH v5] alloc: fix dangling pointer in alloc_state cleanup
Date: Fri, 05 Sep 2025 07:39:23 -0700	[thread overview]
Message-ID: <xmqqecsl55gk.fsf@gitster.g> (raw)
In-Reply-To: <88ae6c7b-0a69-48bd-9e73-672331a22197@gmail.com> ("ノウラ | Flare"'s message of "Fri, 5 Sep 2025 02:25:55 +0200")

ノウラ | Flare <nouraellm@gmail.com> writes:

> By *s I am referring to *s_ so a sanity check with: if (!*s_) return;

Because we

	s = *s_;

upfront, exactly because we do want the code to segfault if the
caller passes NULL to the function (so s_ that is NULL will cause a
NULL dereference right there), after that happens checking the NULL
ness of s and *s_ is equivalent.

And the whole point of doing "s = *s_" upfront is because readers
can easily get confused when they have to deal with double pointers.
The only reason why we pass the address of the pointer variable is
so that we can assign NULL to it at the very end, and before we can
do so, we want to be able inspect the innards of alloc_state object.
By dereferencing s_ early into s, the code can work with the object
itself without having to worry about following double pointer, so
even though if (!*s_) and if (!s) may be equivalent, writing the
latter is more in line with the whole reason why we have a variable
's' that is separate from 's_'.

  parent reply	other threads:[~2025-09-05 14:39 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-26 19:57 [PATCH] reset slab_alloc and state fields in clear_alloc_state() ノウラ | Flare via GitGitGadget
2025-08-27  2:07 ` Junio C Hamano
2025-08-27 23:28 ` [PATCH v2] alloc: fix dangling pointer in alloc_state cleanup ノウラ | Flare via GitGitGadget
2025-08-28 19:29   ` Torsten Bögershausen
2025-08-28 19:47     ` Junio C Hamano
2025-08-28 20:01       ` Junio C Hamano
2025-08-29 13:00   ` [PATCH v3] " ノウラ | Flare via GitGitGadget
2025-09-03 11:18     ` Jeff King
2025-09-03 21:59       ` Junio C Hamano
2025-09-03 23:17     ` [PATCH v4] " ノウラ | Flare via GitGitGadget
2025-09-04  7:47       ` Junio C Hamano
2025-09-04 13:25         ` ノウラ | Flare
2025-09-04 16:43           ` Junio C Hamano
2025-09-04 17:44       ` [PATCH v5] " ノウラ | Flare via GitGitGadget
2025-09-04 20:25         ` Junio C Hamano
2025-09-04 20:49         ` Jeff King
2025-09-04 22:26           ` Junio C Hamano
2025-09-05  0:02             ` ノウラ | Flare
2025-09-05 13:23               ` Jeff King
2025-09-05 17:27                 ` ノウラ | Flare
2025-09-05  0:07             ` ノウラ | Flare
2025-09-05  0:25               ` ノウラ | Flare
2025-09-05  1:03                 ` ノウラ | Flare
2025-09-05 14:39                 ` Junio C Hamano [this message]
2025-09-05 17:47                   ` ノウラ | Flare
2025-09-05 13:15             ` Jeff King
2025-09-05 18:51         ` [PATCH v6] " ノウラ | Flare via GitGitGadget
2025-09-05 19:37           ` Junio C Hamano

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=xmqqecsl55gk.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=nouraellm@gmail.com \
    --cc=peff@peff.net \
    /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;
as well as URLs for NNTP newsgroup(s).