<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-30T10:56:33.680932+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-23167</id>
    <title>CVE-2026-23167 — nfc: nci: Fix race between rfkill and nci_unregister_device().</title>
    <updated>2026-09-30T10:56:33.686292+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>nfc: nci: Fix race between rfkill and nci_unregister_device().</p>
<p>syzbot reported the splat below [0] without a repro.</p>
<p>It indicates that struct nci_dev.cmd_wq had been destroyed before
nci_close_device() was called via rfkill.</p>
<p>nci_dev.cmd_wq is only destroyed in nci_unregister_device(), which
(I think) was called from virtual_ncidev_close() when syzbot close()d
an fd of virtual_ncidev.</p>
<p>The problem is that nci_unregister_device() destroys nci_dev.cmd_wq
first and then calls nfc_unregister_device(), which removes the
device from rfkill by rfkill_unregister().</p>
<p>So, the device is still visible via rfkill even after nci_dev.cmd_wq
is destroyed.</p>
<p>Let's unregister the device from rfkill first in nci_unregister_device().</p>
<p>Note that we cannot call nfc_unregister_device() before
nci_close_device() because</p>
<p>1) nfc_unregister_device() calls device_del() which frees
     all memory allocated by devm_kzalloc() and linked to
     ndev-&gt;conn_info_list</p>
<p>2) nci_rx_work() could try to queue nci_conn_info to
     ndev-&gt;conn_info_list which could be leaked</p>
<p>Thus, nfc_unregister_device() is split into two functions so we
can remove rfkill interfaces only before nci_close_device().</p>
<p>[0]:
DEBUG_LOCKS_WARN_ON(1)
WARNING: kernel/locking/lockdep.c:238 at hlock_class kernel/locking/lockdep.c:238 [inline], CPU#0: syz.0.8675/6349
WARNING: kernel/locking/lockdep.c:238 at check_wait_context kernel/locking/lockdep.c:4854 [inline], CPU…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-23167"/>
  </entry>
</feed>
