All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: David Howells <dhowells@redhat.com>
Cc: netdev@vger.kernel.org, Marc Dionne <marc.dionne@auristor.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	John Johansen <john.johansen@canonical.com>,
	Minas Harutyunyan <hminas@synopsys.com>,
	Simon Horman <horms@kernel.org>,
	apparmor@lists.ubuntu.com, linux-usb@vger.kernel.org,
	stable@kernel.org, Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH net v3 04/11] list: Move on_list_rcu() to list.h and add on_list() also
Date: Sun, 29 Mar 2026 12:12:08 -0700	[thread overview]
Message-ID: <20260329121208.6092419d@kernel.org> (raw)
In-Reply-To: <20260326131838.634095-5-dhowells@redhat.com>

On Thu, 26 Mar 2026 13:18:29 +0000 David Howells wrote:
> diff --git a/include/linux/list.h b/include/linux/list.h
> index 00ea8e5fb88b..d224e7210d1b 100644
> --- a/include/linux/list.h
> +++ b/include/linux/list.h
> @@ -381,6 +381,32 @@ static inline int list_empty(const struct list_head *head)
>  	return READ_ONCE(head->next) == head;
>  }
>  
> +/**
> + * on_list - Test whether an entry is on a list.
> + * @entry: The entry to check
> + *
> + * Test whether an entry is on a list.  Safe to use on an entry initialised
> + * with INIT_LIST_HEAD() or LIST_HEAD() or removed with things like
> + * list_del_init().  Not safe for use with list_del() or list_del_rcu().
> + */
> +static inline bool on_list(const struct list_head *entry)
> +{
> +	return !list_empty(entry);
> +}
> +
> +/**
> + * on_list_rcu - Test whether an entry is on a list (RCU-del safe).
> + * @entry: The entry to check
> + *
> + * Test whether an entry is on a list.  Safe to use on an entry initialised
> + * with INIT_LIST_HEAD() or LIST_HEAD() or removed with things like
> + * list_del_init().  Also safe for use with list_del() or list_del_rcu().
> + */
> +static inline bool on_list_rcu(const struct list_head *entry)
> +{
> +	return !list_empty(entry) && entry->prev != LIST_POISON2;
> +}

Could someone with sufficient weight to their name ack this?

The non-RCU version of on_list() does not sit well with me.
It provides no additional semantics above list_empty() and
the uninit / poison-related gotchas more obvious when typing
!list_empty(&entry->list).

I can believe the RCU version is more useful. It could probably
be used on both RCU and non-RCU entries?

Last minor nit - the list API consistently uses list_ as a prefix.
I have no better name to suggest but it's sad that on_list_rcu()
breaks that.

I think you're missing a READ_ONCE(), BTW.

  reply	other threads:[~2026-03-29 19:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26 13:18 [PATCH net v3 00/11] rxrpc: Miscellaneous fixes David Howells
2026-03-26 13:18 ` [PATCH net v3 01/11] rxrpc: Fix key quota calculation for multitoken keys David Howells
2026-03-26 13:18 ` [PATCH net v3 02/11] rxrpc: Fix key parsing memleak David Howells
2026-03-26 13:18 ` [PATCH net v3 03/11] rxrpc: Fix anonymous key handling David Howells
2026-03-26 13:18 ` [PATCH net v3 04/11] list: Move on_list_rcu() to list.h and add on_list() also David Howells
2026-03-29 19:12   ` Jakub Kicinski [this message]
2026-03-29 20:01     ` Linus Torvalds
2026-03-30 10:49       ` David Howells
2026-03-30 22:14         ` Linus Torvalds
2026-03-30 23:50           ` David Howells
2026-03-31  0:17             ` Linus Torvalds
2026-03-31  0:12           ` Jakub Kicinski
2026-03-29 19:14   ` Jakub Kicinski
2026-03-26 13:18 ` [PATCH net v3 05/11] rxrpc: Fix call removal to use RCU safe deletion David Howells
2026-03-26 13:18 ` [PATCH net v3 06/11] rxrpc: Fix RxGK token loading to check bounds David Howells
2026-03-26 13:18 ` [PATCH net v3 07/11] rxrpc: Fix use of wrong skb when comparing queued RESP challenge serial David Howells
2026-03-26 13:18 ` [PATCH net v3 08/11] rxrpc: Fix rack timer warning to report unexpected mode David Howells
2026-03-26 13:18 ` [PATCH net v3 09/11] rxrpc: Fix keyring reference count leak in rxrpc_setsockopt() David Howells
2026-03-27  1:06   ` Anderson Nascimento
2026-03-27  7:24     ` David Howells
2026-03-28 14:53       ` Anderson Nascimento
2026-03-26 13:18 ` [PATCH net v3 10/11] rxrpc: Fix key reference count leak from call->key David Howells
2026-03-26 13:18 ` [PATCH net v3 11/11] rxrpc: Fix to request an ack if window is limited David Howells

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=20260329121208.6092419d@kernel.org \
    --to=kuba@kernel.org \
    --cc=apparmor@lists.ubuntu.com \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=edumazet@google.com \
    --cc=hminas@synopsys.com \
    --cc=horms@kernel.org \
    --cc=john.johansen@canonical.com \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=marc.dionne@auristor.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.