From: Thomas Gleixner <tglx@linutronix.de>
To: Marc Zyngier <maz@kernel.org>, Tong Zhang <ztong0001@gmail.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>, open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v1] genirq/msi: fix crash when handling Multi-MSI
Date: Wed, 19 Jan 2022 01:44:52 +0100 [thread overview]
Message-ID: <877dawa70b.ffs@tglx> (raw)
In-Reply-To: <87iluh9kgx.ffs@tglx>
On Tue, Jan 18 2022 at 15:39, Thomas Gleixner wrote:
> On Mon, Jan 17 2022 at 11:36, Marc Zyngier wrote:
>> On Mon, 17 Jan 2022 10:10:13 +0000,
>> Tong Zhang <ztong0001@gmail.com> wrote:
>>> pci_msi_domain_check_cap (used by ops->msi_check(domain, info, dev))
>>> msi_domain_prepare_irqs
>>> __msi_domain_alloc_irqs
>>> msi_domain_alloc_irqs_descs_locked
>>>
>>> What I am suggesting is commit 0f62d941acf9 changed how this return
>>> value is being handled and created a UAF
>>
>> OK, this makes more sense.
>>
>> But msi_domain_prepare_irqs() shouldn't fail in this case, and we
>> should proceed with the allocation of at least one vector, which isn't
>> happening here.
>>
>> Also, if __msi_domain_alloc_irqs() is supposed to return the number of
>> irqs allocated, it isn't doing it consistently.
>>
>> Thomas, can you shed some light on what is the intended behaviour
>> here?
>
> Let me stare at it.
It's a subtle issue I overlooked. The UAF is due to
err:
pci_msi_unmask(entry, msi_multi_mask(entry));
in msi_capability_init() because the core has torn down and freed the
entry already.
The proposed patch "fixes" the issue for the PCI/MSI case, but could
cause a memory leak for other callers.
Not sure yet what the proper fix is, but that has to wait until tomorrow
when brain becomes awake again.
Thanks,
tglx
next prev parent reply other threads:[~2022-01-19 0:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-17 9:27 [PATCH v1] genirq/msi: fix crash when handling Multi-MSI Tong Zhang
2022-01-17 9:59 ` Marc Zyngier
2022-01-17 10:10 ` Tong Zhang
2022-01-17 11:36 ` Marc Zyngier
2022-01-18 14:39 ` Thomas Gleixner
2022-01-19 0:44 ` Thomas Gleixner [this message]
2022-01-19 17:54 ` [PATCH] PCI/MSI: Prevent UAF in error path Thomas Gleixner
2022-01-19 18:37 ` Bjorn Helgaas
2022-01-19 18:54 ` Tong Zhang
2022-01-21 1:18 ` [tip: irq/urgent] " tip-bot2 for Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877dawa70b.ffs@tglx \
--to=tglx@linutronix.de \
--cc=jgg@ziepe.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=ztong0001@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).