Re: [PATCH] mailbox: pcc: Free the channel before unmapping the shared memory

Sudeep Holla <[email protected]> Thu, 13 Aug 2026 11:54:26 +0100
Newsgroups gmane.linux.acpi.devel,gmane.linux.kernel
Message-ID <20260813-affable-vociferous-skunk-8820ad@sudeepholla>
On Wed, Aug 12, 2026 at 05:36:03AM -0700, Breno Leitao wrote:
> I am seeing a crash on PCC that is related to a an shared memory being
> unmapped before the IRQ is disabled, and the IRQ kicks in and hits the
> unmapped (NULL) address. This is a summary of what I see on my box:
> 
> 	scmi_protocol scmi_dev.1: Message for 1 type 0 is not expected!
> 	Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
> 	 __handle_irq_event_percpu+0x1c4/0x9e0
> 	 handle_irq_event+0x98/0x218
> 	 handle_fasteoi_irq+0x230/0x750
> 	 generic_handle_domain_irq+0xac/0x138
> 	 gic_handle_irq+0x344/0x740
> 	 call_on_irq_stack+0x30/0x48
> 
> The trapping store is iowrite32(SCMI_SHMEM_FLAG_INTR_ENABLED,
> &shmem->header.flags), a write of 1 at offset 4 of a NULL base.
> 
> But, back to the problem, pcc_mbox_free_channel() unmaps the shared
> memory and clears pchan->chan.shmem *before* freeing the IRQ (aka
> calling mbox_free_channel()).
> 
> The interrupt is still live when the mapping goes away.
> 
> Free the channel first, before the memory unmap. mbox_free_channel()
> calls pcc_shutdown(), which frees the platform interrupt, and then unmap
> shared memory.
> 
> Fixes: 7f9e19f207be ("mailbox: pcc: Check before sending MCTP PCC response ACK")

Reviewed-by: Sudeep Holla <[email protected]>

Digging my git repo, I found I had this fix initially as part of
Commit 9f3bbbb72ad0 ("mailbox: pcc: Initialize SHMEM before binding the
channel with the client") when I encountered that issue but then removed
to post it as separate fix which I never did 🙁.

Thanks for catching this, much appreciated!

-- 
Regards,
Sudeep