From patchwork Fri Jun 10 11:08:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lino Sanfilippo X-Patchwork-Id: 12877478 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5849AC43334 for ; Fri, 10 Jun 2022 11:09:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348335AbiFJLJa (ORCPT ); Fri, 10 Jun 2022 07:09:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348299AbiFJLJY (ORCPT ); Fri, 10 Jun 2022 07:09:24 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 95E9814642D; Fri, 10 Jun 2022 04:09:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1654859346; bh=8pa7jmlaKih9YrYAMoxNaZ4QPmCYmk4V26CTRIglNhA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=bSwRaHR586/m1GevqhL75iI+ujBW/f+Qho62120MsI46IzSmF7WT2qizxPIgoUWsy dB9XuBFuHOXL0dsV3vct/qFqU5j4xwXzLb788zN9aAhAW8D8KdPMPGjcyVyQyZjyhF NYlg/nYA5Lx5M9IwDpdiTyWWJBgKS43lMKgSh2hk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from Venus.fritz.box ([46.223.3.165]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M4s4r-1nztED0Tpv-0020n7; Fri, 10 Jun 2022 13:09:06 +0200 From: LinoSanfilippo@gmx.de To: peterhuewe@gmx.de, jarkko@kernel.org, jgg@ziepe.ca Cc: stefanb@linux.vnet.ibm.com, linux@mniewoehner.de, linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, l.sanfilippo@kunbus.com, LinoSanfilippo@gmx.de, lukas@wunner.de, p.rosenberger@kunbus.com Subject: [PATCH v5 08/10] tpm, tpm_tis: Request threaded interrupt handler Date: Fri, 10 Jun 2022 13:08:44 +0200 Message-Id: <20220610110846.8307-9-LinoSanfilippo@gmx.de> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220610110846.8307-1-LinoSanfilippo@gmx.de> References: <20220610110846.8307-1-LinoSanfilippo@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:V8BbFXXEchexOiGgDifqmFJO5c+ZfjhBgyOVfLvGI3Jop7tZA7S /9n1aO6Ae0L/iEXqIrJI5j0YQZicb743GM7rpdSeE2LuitpKwhZ5Fioop6mFwsg3XvH7ADP 7piw+gvaZLsbMuEk9s59YPTbxx2lui2Q7LE1/CfbIyzUqvvsBfiQbiTQhaYE0nIAPK/Dc+E OJlBLSO9Btad+57sP0lOA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Wbm3A45bWdA=:Slu9pDXD1h6gIoApPQiRbx hEt9s++g1LT8l9m0HPDFkZSMSh2VLOSgxHBeej8F+3AhYwFw7cNIBVCeKYsmqhX40BFq+NxFy xGohHFan6E7SyL1ud7B6OK81PqJI/D0VQ6IqkfSMQHRcJC8LGl6IGbCqxNusHBofNClbKoFxk n5Kt4npdEsstwhDqxQERfWydCuAdvjolcYtUmka8+SbPiQzt43MRECgU3EvzgkPjjchp1Hpl5 82CPcDuJEBUebzmznWLsvhlof7XOeAugEY4juIARMVNZtxTXWIZsHnOoRKvSB4LbeRjJkKYw1 MLCWX8OFTOEkagEZ93IIpRYBdrbULKnit5NXp0+hD3mi5rrCo1FgVksuSYPyImc6CVtPaIQlm SXG1mVcaVWEZGsTVeQOK0QoLDRQsGs/+ytMm5n4uEjN3pKhcdtW0EfdnZlGXXPPcNIhKBk+ZX 7Yrxq3pNoDKv0nmhU8OvDClMELfl5zx1ZE1gn6rr4FILNSn4kNT+n196ePKeX4HziAlrAvIxQ UT2WrBdvZoLn6CydfyHSBsPFf2/GAtMFGtRsVVdzKxh9xZbVcOo13mcpczlvojMbfXtebCNmW cX7E8yG5xSDHK3RFlg8GZUyh+yI4MgL8Wq9LKisyPk0BrkaP0lXloVnXZ4MHm0JgNiGV3Fyh6 +Z5Fyo9bR1PsIdRcpSQpUzN/AQP+lJJhxwVtdGnURp59ptkTRsCUNMmj2L7b/S789qupfQiKJ 20E4LINskVFQzccor/psdgbXksenzhH6wXyt6mZPVWH3GVxrbE+CeSVqpspHsiPYQfOGurs09 ciJ1glUdAMfb2qYfF7dt0BrSbxeSoRBZGnzg6wYMoLhuYX7FU6O8uFwPRbTz5ofKfXK3lwDv9 ++6cxnieAe7lof8HG+oEFD7UofKwC7ICANFE5a2n/yi41uOOoeSWtqF6qcVuhk35c2t7az3WX +jcRBLt5ljXOK5/oVEZRQgpH6cn2kBkFldhtrLM9Dbdc9VhB13Cf3KljMUT7NovJ3/873ljR5 WkWOOpn7kRAzCNn3pvFpq84/+imT+Z8qexXzZCtd+klgp00DYVF2Ajm5sDj/2l9JoiNb6OhkD uixaOSZUPO2l5nhsE7iNK4AB4Oqtx3UhA5nFHvWgFSVirWtNgBZUSRexA== Precedence: bulk List-ID: X-Mailing-List: linux-integrity@vger.kernel.org From: Lino Sanfilippo The TIS interrupt handler at least has to read and write the interrupt status register. In case of SPI both operations result in a call to tpm_tis_spi_transfer() which uses the bus_lock_mutex of the spi device and thus must only be called from a sleepable context. To ensure this request a threaded interrupt handler. Fixes: 1a339b658d9d ("tpm_tis_spi: Pass the SPI IRQ down to the driver") Signed-off-by: Lino Sanfilippo --- drivers/char/tpm/tpm_tis_core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index 0ef74979bc2c..8b5aa4fdbe92 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -794,8 +794,11 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask, int rc; u32 int_status; - if (devm_request_irq(chip->dev.parent, irq, tis_int_handler, flags, - dev_name(&chip->dev), chip) != 0) { + + rc = devm_request_threaded_irq(chip->dev.parent, irq, NULL, + tis_int_handler, IRQF_ONESHOT | flags, + dev_name(&chip->dev), chip); + if (rc) { dev_info(&chip->dev, "Unable to request irq: %d for probe\n", irq); return -1;