<?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://db.gcve.eu</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>Thu, 29 Oct 2026 05:28:39 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-99038 — memstick: rtsx_usb_ms: complete requests after eject instead of dropping them</title>
      <link>https://db.gcve.eu/vuln/cve-2026-99038</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;memstick: rtsx_usb_ms: complete requests after eject instead of dropping them&lt;/p&gt;
&lt;p&gt;memstick_check() can pass its host-&amp;gt;removing check just before
rtsx_usb_ms_drv_remove() sets eject/removing. Its next request is then
silently dropped: rtsx_usb_ms_request() skips schedule_work() once eject
is set, and drv_remove&amp;#39;s cancel_work_sync() can also cancel a queued
handle_req before it picks the request up. Nobody completes
card-&amp;gt;mrq_complete.&lt;/p&gt;
&lt;p&gt;Once memstick core waits for requests without a timeout (&amp;#34;memstick: core:
wait for request completion before freeing card&amp;#34;), this hangs removal:
memstick_check() never returns and memstick_remove_host() blocks in
flush_workqueue():&lt;/p&gt;
&lt;p&gt;INFO: task kworker/u10:3:65 blocked for more than 20 seconds.
  Workqueue: kmemstick memstick_check
   __wait_for_common
   memstick_check&lt;/p&gt;
&lt;p&gt;INFO: task kworker/1:1:33 blocked for more than 20 seconds.
  Workqueue: usb_hub_wq hub_event
   __flush_workqueue
   memstick_remove_host
   rtsx_usb_ms_drv_remove&lt;/p&gt;
&lt;p&gt;Never drop a request. rtsx_usb_ms_request() always schedules handle_req,
and handle_req fails requests with -ENOMEDIUM once eject is set, without
touching the device. drv_remove flushes handle_req instead of cancelling
it, and cancels it only after memstick_remove_host(), when no new
request can arrive, so it cannot run on a freed host.&lt;/p&gt;
&lt;p&gt;The host_mutex drain in drv_remove is removed: handle_req always leaves
host-&amp;gt;req NULL when it finishes, so the…&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;memstick: rtsx_usb_ms: complete requests after eject instead of dropping them&lt;/p&gt;
&lt;p&gt;memstick_check() can pass its host-&amp;gt;removing check just before
rtsx_usb_ms_drv_remove() sets eject/removing. Its next request is then
silently dropped: rtsx_usb_ms_request() skips schedule_work() once eject
is set, and drv_remove&amp;#39;s cancel_work_sync() can also cancel a queued
handle_req before it picks the request up. Nobody completes
card-&amp;gt;mrq_complete.&lt;/p&gt;
&lt;p&gt;Once memstick core waits for requests without a timeout (&amp;#34;memstick: core:
wait for request completion before freeing card&amp;#34;), this hangs removal:
memstick_check() never returns and memstick_remove_host() blocks in
flush_workqueue():&lt;/p&gt;
&lt;p&gt;INFO: task kworker/u10:3:65 blocked for more than 20 seconds.
  Workqueue: kmemstick memstick_check
   __wait_for_common
   memstick_check&lt;/p&gt;
&lt;p&gt;INFO: task kworker/1:1:33 blocked for more than 20 seconds.
  Workqueue: usb_hub_wq hub_event
   __flush_workqueue
   memstick_remove_host
   rtsx_usb_ms_drv_remove&lt;/p&gt;
&lt;p&gt;Never drop a request. rtsx_usb_ms_request() always schedules handle_req,
and handle_req fails requests with -ENOMEDIUM once eject is set, without
touching the device. drv_remove flushes handle_req instead of cancelling
it, and cancels it only after memstick_remove_host(), when no new
request can arrive, so it cannot run on a freed host.&lt;/p&gt;
&lt;p&gt;The host_mutex drain in drv_remove is removed: handle_req always leaves
host-&amp;gt;req NULL when it finishes, so the…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-99038</guid>
    </item>
  </channel>
</rss>
