From: Ingo Molnar <mingo@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Alexey Gladkov <legion@kernel.org>,
Ingo Molnar <mingo@redhat.com>, Will Deacon <will@kernel.org>,
Waiman Long <longman@redhat.com>,
Boqun Feng <boqun.feng@gmail.com>,
linux-kernel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v2 2/2] seqlock: change __seqprop() to return the function pointer
Date: Thu, 12 Oct 2023 20:21:28 +0200 [thread overview]
Message-ID: <ZSg5KAFxVzKoFlhZ@gmail.com> (raw)
In-Reply-To: <20231012143227.GA16143@redhat.com>
* Oleg Nesterov <oleg@redhat.com> wrote:
> This simplifies the macro and makes it easy to add the new seqprop's
> with 2 or more args.
>
> Plus this way we do not lose the type info, the (void*) type cast is
> no longer needed.
>
> And the latter reveals the problem: a lot of seqcount_t helpers pass
> the "const seqcount_t *s" argument to __seqprop_ptr(seqcount_t *s)
> but (before this patch) "(void *)(s)" masked the problem.
>
> So this patch changes __seqprop_ptr() and __seqprop_##lockname##_ptr()
> to accept the "const LOCKNAME *s" argument. This is not nice either,
> they need to drop the constness on return because these helpers are used
> by both the readers and writers, but at least it is clear what's going on.
> +__seqprop_##lockname##_ptr(const seqcount_##lockname##_t *s) \
> { \
> + return (void *)&s->seqcount; /* drop const */ \
> } \
> +static inline seqcount_t *__seqprop_ptr(const seqcount_t *s)
> {
> + return (void *)s; /* drop const */
> }
Okay, so dropping 'const' makes sense in terms of staying bug-compatible
with the previous API and not build-breaking the world - but could we
perhaps follow this up with fixups of the type misuse and then a removal
of the forced type casts from these APIs?
Meanwhile I'm applying your patches to tip:locking/core, unless someone objects.
Thanks,
Ingo
next prev parent reply other threads:[~2023-10-12 18:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-12 14:31 [PATCH v2 1/2] seqlock: simplify SEQCOUNT_LOCKNAME() Oleg Nesterov
2023-10-12 14:32 ` [PATCH v2 2/2] seqlock: change __seqprop() to return the function pointer Oleg Nesterov
2023-10-12 18:21 ` Ingo Molnar [this message]
2023-10-12 19:24 ` Linus Torvalds
2023-10-13 8:46 ` [PATCH] locking/seqlock: Propagate 'const' pointers within read-only methods, remove forced type casts Ingo Molnar
2023-10-13 16:10 ` Oleg Nesterov
2023-10-12 18:35 ` [tip: locking/core] locking/seqlock: Change __seqprop() to return the function pointer tip-bot2 for Oleg Nesterov
2023-10-12 18:35 ` [tip: locking/core] locking/seqlock: Simplify SEQCOUNT_LOCKNAME() tip-bot2 for Oleg Nesterov
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=ZSg5KAFxVzKoFlhZ@gmail.com \
--to=mingo@kernel.org \
--cc=boqun.feng@gmail.com \
--cc=legion@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=will@kernel.org \
/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