---
name: "list_del_rcu"
section: "9"
platform: "linux"
package: "linux-manual-2.6.26"
version: "2.6.26-29"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/list_del_rcu"
---

# list\_del\_rcu(9)

deletes entry from list without re-initialization

## NAME

list\_del\_rcu - deletes entry from list without re-initialization

## SYNOPSIS

**void list\_del\_rcu(struct list\_head \*** *entry***);**

## ARGUMENTS

*entry*

the element to delete from the list.

## NOTE

**list\_empty** on entry does not return true after this, the entry is in an undefined state. It is useful for RCU based lockfree traversal.

In particular, it means that we can not poison the forward pointers that may still be used for walking the list.

The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as **list\_del\_rcu** or **list\_add\_rcu**, running on this same list. However, it is perfectly legal to run concurrently with the \_rcu list-traversal primitives, such as **list\_for\_each\_entry\_rcu**.

Note that the caller is not permitted to immediately free the newly deleted entry. Instead, either **synchronize\_rcu** or **call\_rcu** must be used to defer freeing until an RCU grace period has elapsed.

## COPYRIGHT
