<?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://cve.radiocsirt.org</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>Wed, 07 Oct 2026 05:46:58 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-48760 — USB: core: Fix hang in usb_kill_urb by adding memory barriers</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2022-48760</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;USB: core: Fix hang in usb_kill_urb by adding memory barriers&lt;/p&gt;
&lt;p&gt;The syzbot fuzzer has identified a bug in which processes hang waiting
for usb_kill_urb() to return.  It turns out the issue is not unlinking
the URB; that works just fine.  Rather, the problem arises when the
wakeup notification that the URB has completed is not received.&lt;/p&gt;
&lt;p&gt;The reason is memory-access ordering on SMP systems.  In outline form,
usb_kill_urb() and __usb_hcd_giveback_urb() operating concurrently on
different CPUs perform the following actions:&lt;/p&gt;
&lt;p&gt;CPU 0					CPU 1
----------------------------		---------------------------------
usb_kill_urb():				__usb_hcd_giveback_urb():
  ...					  ...
  atomic_inc(&amp;amp;urb-&amp;gt;reject);		  atomic_dec(&amp;amp;urb-&amp;gt;use_count);
  ...					  ...
  wait_event(usb_kill_urb_queue,
	atomic_read(&amp;amp;urb-&amp;gt;use_count) == 0);
					  if (atomic_read(&amp;amp;urb-&amp;gt;reject))
						wake_up(&amp;amp;usb_kill_urb_queue);&lt;/p&gt;
&lt;p&gt;Confining your attention to urb-&amp;gt;reject and urb-&amp;gt;use_count, you can
see that the overall pattern of accesses on CPU 0 is:&lt;/p&gt;
&lt;p&gt;write urb-&amp;gt;reject, then read urb-&amp;gt;use_count;&lt;/p&gt;
&lt;p&gt;whereas the overall pattern of accesses on CPU 1 is:&lt;/p&gt;
&lt;p&gt;write urb-&amp;gt;use_count, then read urb-&amp;gt;reject.&lt;/p&gt;
&lt;p&gt;This pattern is referred to in memory-model circles as SB (for &amp;#34;Store
Buffering&amp;#34;), and it is well known that without suitable enforcement of
the desired order of accesses -- in the form of memory barriers -- it
is entirely possible for one or both CPUs to execute their r…&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;USB: core: Fix hang in usb_kill_urb by adding memory barriers&lt;/p&gt;
&lt;p&gt;The syzbot fuzzer has identified a bug in which processes hang waiting
for usb_kill_urb() to return.  It turns out the issue is not unlinking
the URB; that works just fine.  Rather, the problem arises when the
wakeup notification that the URB has completed is not received.&lt;/p&gt;
&lt;p&gt;The reason is memory-access ordering on SMP systems.  In outline form,
usb_kill_urb() and __usb_hcd_giveback_urb() operating concurrently on
different CPUs perform the following actions:&lt;/p&gt;
&lt;p&gt;CPU 0					CPU 1
----------------------------		---------------------------------
usb_kill_urb():				__usb_hcd_giveback_urb():
  ...					  ...
  atomic_inc(&amp;amp;urb-&amp;gt;reject);		  atomic_dec(&amp;amp;urb-&amp;gt;use_count);
  ...					  ...
  wait_event(usb_kill_urb_queue,
	atomic_read(&amp;amp;urb-&amp;gt;use_count) == 0);
					  if (atomic_read(&amp;amp;urb-&amp;gt;reject))
						wake_up(&amp;amp;usb_kill_urb_queue);&lt;/p&gt;
&lt;p&gt;Confining your attention to urb-&amp;gt;reject and urb-&amp;gt;use_count, you can
see that the overall pattern of accesses on CPU 0 is:&lt;/p&gt;
&lt;p&gt;write urb-&amp;gt;reject, then read urb-&amp;gt;use_count;&lt;/p&gt;
&lt;p&gt;whereas the overall pattern of accesses on CPU 1 is:&lt;/p&gt;
&lt;p&gt;write urb-&amp;gt;use_count, then read urb-&amp;gt;reject.&lt;/p&gt;
&lt;p&gt;This pattern is referred to in memory-model circles as SB (for &amp;#34;Store
Buffering&amp;#34;), and it is well known that without suitable enforcement of
the desired order of accesses -- in the form of memory barriers -- it
is entirely possible for one or both CPUs to execute their r…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2022-48760</guid>
    </item>
  </channel>
</rss>
