<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.freebsd.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.freebsd.org/bugzilla/"
          
          maintainer="bugmeister@FreeBSD.org"
>

    <bug>
          <bug_id>255862</bug_id>
          
          <creation_ts>2021-05-14 09:18:13 +0000</creation_ts>
          <short_desc>[PATCH] dev/acpica: Fix a double free in acpi_pci_link_route_irqs</short_desc>
          <delta_ts>2021-06-02 13:39:08 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Base System</product>
          <component>kern</component>
          <version>CURRENT</version>
          <rep_platform>Any</rep_platform>
          <op_sys>Any</op_sys>
          <bug_status>Closed</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>Affects Many People</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>lylgood</reporter>
          <assigned_to name="Mark Johnston">markj</assigned_to>
          <cc>markj</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161277</commentid>
    <comment_count>0</comment_count>
      <attachid>224925</attachid>
    <who name="">lylgood</who>
    <bug_when>2021-05-14 09:18:13 +0000</bug_when>
    <thetext>Created attachment 224925
add a status check

Bug File: sys/dev/acpica/acpi_pci_link.c

In function acpi_pci_link_route_irqs, srsbuf-&gt;Pointer is freed via AcpiOsFree() in the callee status = acpi_pci_link_srs_from_links(sc, &amp;srsbuf), and then the callee returns a FAILURE status.

But the returned status has not been checked, that causes srsbuf-&gt;Pointer is freed again at line 916 and 876, which are double free bugs.

My patch adds a check on the returned status of acpi_pci_link_srs_from_links() to avoid the double free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163226</commentid>
    <comment_count>1</comment_count>
    <who name="">commit-hook</who>
    <bug_when>2021-05-26 14:50:15 +0000</bug_when>
    <thetext>A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=4cf33275289088e3b0a913a44b5cd549e348094d

commit 4cf33275289088e3b0a913a44b5cd549e348094d
Author:     Mark Johnston &lt;markj@FreeBSD.org&gt;
AuthorDate: 2021-05-26 14:34:39 +0000
Commit:     Mark Johnston &lt;markj@FreeBSD.org&gt;
CommitDate: 2021-05-26 14:49:30 +0000

    acpi: Add missing error handling to acpi_pci_link_route_irqs()

    Otherwise the resouce buffer may have been freed when
    AcpiSetCurrentResources() is called, leading to a use-after-free.

    PR:             255862
    Submitted by:   Lv Yunlong &lt;lylgood@foxmail.com&gt; (original version)
    MFC after:      1 week

 sys/dev/acpica/acpi_pci_link.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164418</commentid>
    <comment_count>2</comment_count>
    <who name="">commit-hook</who>
    <bug_when>2021-06-02 13:35:45 +0000</bug_when>
    <thetext>A commit in branch stable/13 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=78b147467ea55886071b099d364757e827afbcd7

commit 78b147467ea55886071b099d364757e827afbcd7
Author:     Mark Johnston &lt;markj@FreeBSD.org&gt;
AuthorDate: 2021-05-26 14:34:39 +0000
Commit:     Mark Johnston &lt;markj@FreeBSD.org&gt;
CommitDate: 2021-06-02 13:32:37 +0000

    acpi: Add missing error handling to acpi_pci_link_route_irqs()

    Otherwise the resouce buffer may have been freed when
    AcpiSetCurrentResources() is called, leading to a use-after-free.

    PR:             255862
    Submitted by:   Lv Yunlong &lt;lylgood@foxmail.com&gt; (original version)
    MFC after:      1 week

    (cherry picked from commit 4cf33275289088e3b0a913a44b5cd549e348094d)

 sys/dev/acpica/acpi_pci_link.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164423</commentid>
    <comment_count>3</comment_count>
    <who name="">commit-hook</who>
    <bug_when>2021-06-02 13:37:49 +0000</bug_when>
    <thetext>A commit in branch stable/12 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=a53f3a29bf6d3af7cbddaf97b04b05cac7e923a6

commit a53f3a29bf6d3af7cbddaf97b04b05cac7e923a6
Author:     Mark Johnston &lt;markj@FreeBSD.org&gt;
AuthorDate: 2021-05-26 14:34:39 +0000
Commit:     Mark Johnston &lt;markj@FreeBSD.org&gt;
CommitDate: 2021-06-02 13:36:03 +0000

    acpi: Add missing error handling to acpi_pci_link_route_irqs()

    Otherwise the resouce buffer may have been freed when
    AcpiSetCurrentResources() is called, leading to a use-after-free.

    PR:             255862
    Submitted by:   Lv Yunlong &lt;lylgood@foxmail.com&gt; (original version)
    MFC after:      1 week

    (cherry picked from commit 4cf33275289088e3b0a913a44b5cd549e348094d)

 sys/dev/acpica/acpi_pci_link.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224925</attachid>
            <date>2021-05-14 09:18:13 +0000</date>
            <delta_ts>2021-05-14 09:18:13 +0000</delta_ts>
            <desc>add a status check</desc>
            <filename>0001-dev-acpica-double-free-acpi_pci_link.patch</filename>
            <type>text/plain</type>
            <size>508</size>
            <attacher>lylgood</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3N5cy9kZXYvYWNwaWNhL2FjcGlfcGNpX2xpbmsuYyBiL3N5cy9kZXYvYWNw
aWNhL2FjcGlfcGNpX2xpbmsuYwppbmRleCBlY2M0ZjI2ZDNmYjQuLjExOGQxODlmM2IzNyAxMDA2
NDQKLS0tIGEvc3lzL2Rldi9hY3BpY2EvYWNwaV9wY2lfbGluay5jCisrKyBiL3N5cy9kZXYvYWNw
aWNhL2FjcGlfcGNpX2xpbmsuYwpAQCAtODY4LDYgKzg2OCwxMCBAQCBhY3BpX3BjaV9saW5rX3Jv
dXRlX2lycXMoZGV2aWNlX3QgZGV2KQogCWVsc2UKIAkJc3RhdHVzID0gYWNwaV9wY2lfbGlua19z
cnNfZnJvbV9jcnMoc2MsICZzcnNidWYpOwogCisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7
CisJCXJldHVybiAoc3RhdHVzKTsKKwl9CisKIAkvKiBXcml0ZSBvdXQgbmV3IHJlc291cmNlcyB2
aWEgX1NSUy4gKi8KIAlzdGF0dXMgPSBBY3BpU2V0Q3VycmVudFJlc291cmNlcyhhY3BpX2dldF9o
YW5kbGUoZGV2KSwgJnNyc2J1Zik7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>