<?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>Tue, 29 Sep 2026 10:26:18 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-49214 — powerpc/64s: Don't use DSISR for SLB faults</title>
      <link>https://db.gcve.eu/vuln/cve-2022-49214</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;powerpc/64s: Don&amp;#39;t use DSISR for SLB faults&lt;/p&gt;
&lt;p&gt;Since commit 46ddcb3950a2 (&amp;#34;powerpc/mm: Show if a bad page fault on data
is read or write.&amp;#34;) we use page_fault_is_write(regs-&amp;gt;dsisr) in
__bad_page_fault() to determine if the fault is for a read or write, and
change the message printed accordingly.&lt;/p&gt;
&lt;p&gt;But SLB faults, aka Data Segment Interrupts, don&amp;#39;t set DSISR (Data
Storage Interrupt Status Register) to a useful value. All ISA versions
from v2.03 through v3.1 specify that the Data Segment Interrupt sets
DSISR &amp;#34;to an undefined value&amp;#34;. As far as I can see there&amp;#39;s no mention of
SLB faults setting DSISR in any BookIV content either.&lt;/p&gt;
&lt;p&gt;This manifests as accesses that should be a read being incorrectly
reported as writes, for example, using the xmon &amp;#34;dump&amp;#34; command:&lt;/p&gt;
&lt;p&gt;0:mon&amp;gt; d 0x5deadbeef0000000
  5deadbeef0000000
  [359526.415354][    C6] BUG: Unable to handle kernel data access on write at 0x5deadbeef0000000
  [359526.415611][    C6] Faulting instruction address: 0xc00000000010a300
  cpu 0x6: Vector: 380 (Data SLB Access) at [c00000000ffbf400]
      pc: c00000000010a300: mread+0x90/0x190&lt;/p&gt;
&lt;p&gt;If we disassemble the PC, we see a load instruction:&lt;/p&gt;
&lt;p&gt;0:mon&amp;gt; di c00000000010a300
  c00000000010a300 89490000      lbz     r10,0(r9)&lt;/p&gt;
&lt;p&gt;We can also see in exceptions-64s.S that the data_access_slb block
doesn&amp;#39;t set IDSISR=1, which means it doesn&amp;#39;t load DSISR into pt_regs. So
the value we&amp;#39;re using to determine if the fault is a read/wri…&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;powerpc/64s: Don&amp;#39;t use DSISR for SLB faults&lt;/p&gt;
&lt;p&gt;Since commit 46ddcb3950a2 (&amp;#34;powerpc/mm: Show if a bad page fault on data
is read or write.&amp;#34;) we use page_fault_is_write(regs-&amp;gt;dsisr) in
__bad_page_fault() to determine if the fault is for a read or write, and
change the message printed accordingly.&lt;/p&gt;
&lt;p&gt;But SLB faults, aka Data Segment Interrupts, don&amp;#39;t set DSISR (Data
Storage Interrupt Status Register) to a useful value. All ISA versions
from v2.03 through v3.1 specify that the Data Segment Interrupt sets
DSISR &amp;#34;to an undefined value&amp;#34;. As far as I can see there&amp;#39;s no mention of
SLB faults setting DSISR in any BookIV content either.&lt;/p&gt;
&lt;p&gt;This manifests as accesses that should be a read being incorrectly
reported as writes, for example, using the xmon &amp;#34;dump&amp;#34; command:&lt;/p&gt;
&lt;p&gt;0:mon&amp;gt; d 0x5deadbeef0000000
  5deadbeef0000000
  [359526.415354][    C6] BUG: Unable to handle kernel data access on write at 0x5deadbeef0000000
  [359526.415611][    C6] Faulting instruction address: 0xc00000000010a300
  cpu 0x6: Vector: 380 (Data SLB Access) at [c00000000ffbf400]
      pc: c00000000010a300: mread+0x90/0x190&lt;/p&gt;
&lt;p&gt;If we disassemble the PC, we see a load instruction:&lt;/p&gt;
&lt;p&gt;0:mon&amp;gt; di c00000000010a300
  c00000000010a300 89490000      lbz     r10,0(r9)&lt;/p&gt;
&lt;p&gt;We can also see in exceptions-64s.S that the data_access_slb block
doesn&amp;#39;t set IDSISR=1, which means it doesn&amp;#39;t load DSISR into pt_regs. So
the value we&amp;#39;re using to determine if the fault is a read/wri…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2022-49214</guid>
    </item>
  </channel>
</rss>
