In the Linux kernel, the following vulnerability has been resolved: configfs: fix a race in configfs_{,un}registersubsystem() When configfsregistersubsystem() or configfsunregistersubsystem() is executing linkgroup() or unlinkgroup(), it is possible that two processes add or delete list concurrently. Some unfortunate interleavings of them can cause kernel panic. One of cases is: A --> B --> C --> D A <-- B <-- C <-- D delete listhead *B | delete listhead *C --------------------------------|----------------------------------- configfsunregistersubsystem | configfsunregistersubsystem unlinkgroup | unlinkgroup unlinkobj | unlinkobj listdelinit | listdel_init __listdelentry | __listdelentry __list_del | _listdel // next == C | next->prev = prev | | next->prev = prev prev->next = next | | // prev == B | prev->next = next Fix this by adding mutex when calling linkgroup() or unlinkgroup(), but parent configfssubsystem is NULL when configitem is root. So I create a mutex configfssubsystemmutex.