<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 02 Oct 2026 16:13:03 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64573 — Bluetooth: qca: fix NVM tag length underflow in TLV parser</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64573</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Bluetooth: qca: fix NVM tag length underflow in TLV parser&lt;/p&gt;
&lt;p&gt;In the TLV_TYPE_NVM branch of qca_tlv_check_data() the tag loop bound is
&amp;#34;while (idx &amp;lt; length - sizeof(struct tlv_type_nvm))&amp;#34;. &amp;#34;length&amp;#34; is a signed
int from the firmware TLV header and sizeof(struct tlv_type_nvm) is a
size_t (12), so &amp;#34;length&amp;#34; is converted to size_t and any firmware-supplied
&amp;#34;length&amp;#34; &amp;lt; 12 makes the subtraction wrap to a huge value. The loop body
then reads a 12-byte struct tlv_type_nvm past the end of the short
vmalloc&amp;#39;d firmware buffer (and the EDL_TAG_ID_* handlers can write past it).&lt;/p&gt;
&lt;p&gt;Rewrite the bound as &amp;#34;idx + sizeof(struct tlv_type_nvm) &amp;lt;= length&amp;#34;; both
operands are non-negative, so it no longer underflows and a &amp;#34;length&amp;#34; too
small for one record correctly skips the loop.&lt;/p&gt;
&lt;p&gt;BUG: KASAN: vmalloc-out-of-bounds in qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421)
  Read of size 2 at addr ffffc900000e5004 by task kworker/u9:0/52
  Workqueue: hci0 hci_power_on
  Call Trace:
   ...
   kasan_report (mm/kasan/report.c:595)
   qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421 drivers/bluetooth/btqca.c:617)
   qca_uart_setup (drivers/bluetooth/btqca.c:948)
   qca_setup (drivers/bluetooth/hci_qca.c:2029)
   hci_uart_setup (drivers/bluetooth/hci_ldisc.c:438)
   hci_dev_open_sync (net/bluetooth/hci_sync.c:5227)
   hci_power_on (net/bluetooth/hci_core.c:920)
   process_one_work (kernel/workqueue.c:3322)
   worker_thread…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Bluetooth: qca: fix NVM tag length underflow in TLV parser&lt;/p&gt;
&lt;p&gt;In the TLV_TYPE_NVM branch of qca_tlv_check_data() the tag loop bound is
&amp;#34;while (idx &amp;lt; length - sizeof(struct tlv_type_nvm))&amp;#34;. &amp;#34;length&amp;#34; is a signed
int from the firmware TLV header and sizeof(struct tlv_type_nvm) is a
size_t (12), so &amp;#34;length&amp;#34; is converted to size_t and any firmware-supplied
&amp;#34;length&amp;#34; &amp;lt; 12 makes the subtraction wrap to a huge value. The loop body
then reads a 12-byte struct tlv_type_nvm past the end of the short
vmalloc&amp;#39;d firmware buffer (and the EDL_TAG_ID_* handlers can write past it).&lt;/p&gt;
&lt;p&gt;Rewrite the bound as &amp;#34;idx + sizeof(struct tlv_type_nvm) &amp;lt;= length&amp;#34;; both
operands are non-negative, so it no longer underflows and a &amp;#34;length&amp;#34; too
small for one record correctly skips the loop.&lt;/p&gt;
&lt;p&gt;BUG: KASAN: vmalloc-out-of-bounds in qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421)
  Read of size 2 at addr ffffc900000e5004 by task kworker/u9:0/52
  Workqueue: hci0 hci_power_on
  Call Trace:
   ...
   kasan_report (mm/kasan/report.c:595)
   qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421 drivers/bluetooth/btqca.c:617)
   qca_uart_setup (drivers/bluetooth/btqca.c:948)
   qca_setup (drivers/bluetooth/hci_qca.c:2029)
   hci_uart_setup (drivers/bluetooth/hci_ldisc.c:438)
   hci_dev_open_sync (net/bluetooth/hci_sync.c:5227)
   hci_power_on (net/bluetooth/hci_core.c:920)
   process_one_work (kernel/workqueue.c:3322)
   worker_thread…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64573</guid>
    </item>
  </channel>
</rss>
