LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, stable@vger.kernel.org, Allen Pais <apais@linux.microsoft.com>, Tyler Hicks <tyhicks@linux.microsoft.com>, Sumit Garg <sumit.garg@linaro.org>, Florian Fainelli <f.fainelli@gmail.com>, Jens Wiklander <jens.wiklander@linaro.org>, Sasha Levin <sashal@kernel.org> Subject: [PATCH 5.10 03/19] firmware: tee_bnxt: Release TEE shm, session, and context during kexec Date: Fri, 13 Aug 2021 17:07:20 +0200 [thread overview] Message-ID: <20210813150522.739650240@linuxfoundation.org> (raw) In-Reply-To: <20210813150522.623322501@linuxfoundation.org> From: Allen Pais <apais@linux.microsoft.com> [ Upstream commit 914ab19e471d8fb535ed50dff108b0a615f3c2d8 ] Implement a .shutdown hook that will be called during a kexec operation so that the TEE shared memory, session, and context that were set up during .probe can be properly freed/closed. Additionally, don't use dma-buf backed shared memory for the fw_shm_pool. dma-buf backed shared memory cannot be reliably freed and unregistered during a kexec operation even when tee_shm_free() is called on the shm from a .shutdown hook. The problem occurs because dma_buf_put() calls fput() which then uses task_work_add(), with the TWA_RESUME parameter, to queue tee_shm_release() to be called before the current task returns to user mode. However, the current task never returns to user mode before the kexec completes so the memory is never freed nor unregistered. Use tee_shm_alloc_kernel_buf() to avoid dma-buf backed shared memory allocation so that tee_shm_free() can directly call tee_shm_release(). This will ensure that the shm can be freed and unregistered during a kexec operation. Fixes: 246880958ac9 ("firmware: broadcom: add OP-TEE based BNXT f/w manager") Cc: stable@vger.kernel.org Signed-off-by: Allen Pais <apais@linux.microsoft.com> Co-developed-by: Tyler Hicks <tyhicks@linux.microsoft.com> Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com> Reviewed-by: Sumit Garg <sumit.garg@linaro.org> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/firmware/broadcom/tee_bnxt_fw.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) --- a/drivers/firmware/broadcom/tee_bnxt_fw.c +++ b/drivers/firmware/broadcom/tee_bnxt_fw.c @@ -212,10 +212,9 @@ static int tee_bnxt_fw_probe(struct devi pvt_data.dev = dev; - fw_shm_pool = tee_shm_alloc(pvt_data.ctx, MAX_SHM_MEM_SZ, - TEE_SHM_MAPPED | TEE_SHM_DMA_BUF); + fw_shm_pool = tee_shm_alloc_kernel_buf(pvt_data.ctx, MAX_SHM_MEM_SZ); if (IS_ERR(fw_shm_pool)) { - dev_err(pvt_data.dev, "tee_shm_alloc failed\n"); + dev_err(pvt_data.dev, "tee_shm_alloc_kernel_buf failed\n"); err = PTR_ERR(fw_shm_pool); goto out_sess; } @@ -242,6 +241,14 @@ static int tee_bnxt_fw_remove(struct dev return 0; } +static void tee_bnxt_fw_shutdown(struct device *dev) +{ + tee_shm_free(pvt_data.fw_shm_pool); + tee_client_close_session(pvt_data.ctx, pvt_data.session_id); + tee_client_close_context(pvt_data.ctx); + pvt_data.ctx = NULL; +} + static const struct tee_client_device_id tee_bnxt_fw_id_table[] = { {UUID_INIT(0x6272636D, 0x2019, 0x0716, 0x42, 0x43, 0x4D, 0x5F, 0x53, 0x43, 0x48, 0x49)}, @@ -257,6 +264,7 @@ static struct tee_client_driver tee_bnxt .bus = &tee_bus_type, .probe = tee_bnxt_fw_probe, .remove = tee_bnxt_fw_remove, + .shutdown = tee_bnxt_fw_shutdown, }, };
next prev parent reply other threads:[~2021-08-13 15:17 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-13 15:07 [PATCH 5.10 00/19] 5.10.59-rc1 review Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 01/19] KVM: SVM: Fix off-by-one indexing when nullifying last used SEV VMCB Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 02/19] tee: Correct inappropriate usage of TEE_SHM_DMA_BUF flag Greg Kroah-Hartman 2021-08-13 15:07 ` Greg Kroah-Hartman [this message] 2021-08-13 15:07 ` [PATCH 5.10 04/19] bpf: Add _kernel suffix to internal lockdown_bpf_read Greg Kroah-Hartman 2021-08-13 19:55 ` Pavel Machek 2021-08-13 21:57 ` Daniel Borkmann 2021-08-15 11:42 ` Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 05/19] bpf: Add lockdown check for probe_write_user helper Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 06/19] Revert "selftests/resctrl: Use resctrl/info for feature detection" Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 07/19] mm: make zone_to_nid() and zone_set_nid() available for DISCONTIGMEM Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 08/19] arm64: dts: renesas: rzg2: Add usb2_clksel to RZ/G2 M/N/H Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 09/19] arm64: dts: renesas: beacon: Fix USB extal reference Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 10/19] arm64: dts: renesas: beacon: Fix USB ref clock references Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 11/19] vboxsf: Honor excl flag to the dir-inode create op Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 12/19] vboxsf: Make vboxsf_dir_create() return the handle for the created file Greg Kroah-Hartman 2021-08-13 19:31 ` Pavel Machek 2021-08-15 11:43 ` Greg Kroah-Hartman 2021-08-15 13:57 ` Hans de Goede 2021-08-16 8:49 ` Greg Kroah-Hartman 2021-08-17 15:52 ` Sudip Mukherjee 2021-08-17 18:21 ` Hans de Goede 2021-08-13 15:07 ` [PATCH 5.10 13/19] USB:ehci:fix Kunpeng920 ehci hardware problem Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 14/19] ALSA: pcm: Fix mmap breakage without explicit buffer setup Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 15/19] ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 650 G8 Notebook PC Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 16/19] ALSA: hda: Add quirk for ASUS Flow x13 Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 17/19] ppp: Fix generating ppp unit id when ifname is not specified Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 18/19] ovl: prevent private clone if bind mount is not allowed Greg Kroah-Hartman 2021-08-13 15:07 ` [PATCH 5.10 19/19] net: xilinx_emaclite: Do not print real IOMEM pointer Greg Kroah-Hartman 2021-08-13 23:24 ` [PATCH 5.10 00/19] 5.10.59-rc1 review Shuah Khan 2021-08-14 11:07 ` Sudip Mukherjee 2021-08-14 11:35 ` Naresh Kamboju 2021-08-14 15:08 ` Fox Chen 2021-08-14 18:16 ` Guenter Roeck 2021-08-15 19:48 ` Pavel Machek 2021-08-16 3:03 ` Samuel Zou
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=20210813150522.739650240@linuxfoundation.org \ --to=gregkh@linuxfoundation.org \ --cc=apais@linux.microsoft.com \ --cc=f.fainelli@gmail.com \ --cc=jens.wiklander@linaro.org \ --cc=linux-kernel@vger.kernel.org \ --cc=sashal@kernel.org \ --cc=stable@vger.kernel.org \ --cc=sumit.garg@linaro.org \ --cc=tyhicks@linux.microsoft.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: linkBe 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).