From patchwork Tue Jul 3 17:11:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 10504787 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 782136035E for ; Tue, 3 Jul 2018 17:11:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C1B327FC0 for ; Tue, 3 Jul 2018 17:11:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4F3E628346; Tue, 3 Jul 2018 17:11:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C39CA27FC0 for ; Tue, 3 Jul 2018 17:11:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934156AbeGCRLo (ORCPT ); Tue, 3 Jul 2018 13:11:44 -0400 Received: from mail-eopbgr680058.outbound.protection.outlook.com ([40.107.68.58]:24681 "EHLO NAM04-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933063AbeGCRLm (ORCPT ); Tue, 3 Jul 2018 13:11:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Dfoio2LXTvZEQnM+ZYcwGYHeIwbuakp00kDSqN1xLZo=; b=RdP2I9iqFexRASxqq6BiQ8Xrt+7A3UvstApHL7l1N8c6HQr8L6s+E1KsAnMMCSKR4jJa3uNL7xj/WkzmkLcdJld3Q3D7mkUP/tYDy/fJH/hv0vxaUXW12EpSATyH+Y1uw4eNUdy6+7jxXs8ZLe31Smk6J+uFFBdNd4VaVtccIEY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by SN1PR12MB0174.namprd12.prod.outlook.com (2a01:111:e400:5144::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.930.18; Tue, 3 Jul 2018 17:11:36 +0000 From: Tom Lendacky Subject: [PATCH v1 1/5] crypto: ccp: Fix command completion detection race To: linux-crypto@vger.kernel.org Cc: Brijesh Singh , Gary Hook , Herbert Xu , David Miller Date: Tue, 03 Jul 2018 12:11:33 -0500 Message-ID: <20180703171133.3225.66397.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180703171122.3225.55265.stgit@tlendack-t1.amdoffice.net> References: <20180703171122.3225.55265.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR21CA0020.namprd21.prod.outlook.com (2603:10b6:404:8e::30) To SN1PR12MB0174.namprd12.prod.outlook.com (2a01:111:e400:5144::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ab0a7375-c792-49e7-329e-08d5e1080952 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB0174; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 3:mkcZJXplhe6UGAfq1glFPOnynCKgS82WBbf7SvU9yZljkYQBD9kNczMqh/ATGZ2NmF3lo1eFhpQNWqfNpSKiaPQBVnJDjANFG9+2wICMNMBq9ijjGT80LZEypjVU32BnoGQZbBiRDhS3fb9NhGXXR6Af+aczngAeSl83UVZLeyIrGraisvB3i59p4/mNs1R5J3Aplqy6JeLfJ2y+1godOsYczJErwqyzozIgGJdI1xkdS7FxHl1Kkr1qFQ4xXmrT; 25:HlXBD+VMz1tyVJ1y6/5YioH+J4NzKNbeIUrDNfqSbFcUBtJwjTRSDJVK6FZhUn4UVL7RfAG4i3u+WWrwPa3HUiGWIuc9lU2VjfOtSAMNFJDD1hEdmMxYU52fTmVMlbEXZlXnpWcbml7U0j8LR+ZbfVMXsvmzC3oB5xjccFkfIVGTmWG8oxlGsuI763Us7pJBY8aRqn8Y/EUtiFB2q3bcSqyrVZYDcFGvL7BVNRYGHkT9XoTN0ZBi7HiXfAXQQmRUXGUBv9FJuF+B/4CqlGKm4NWAdP9OSNg6Mb3z3F8I6eoVsJTPg5+GucNE6I/dSYW8RSlJq/XbEuAYRE30jGi7Qg==; 31:HeRqF/wgw/uWFNOhFN7baHZicr2CXM4IqJzVZZVq1BWXv6M7u23US6HHiFai6H6ERpCXyxX8NhddySxvpq05ooQPc7UQNXaUnsLaOzK3yGoJWPubT9VnLwtk35TxObNFK0NOvmuLpcQVFX+qCu7AS9kPdLFpDFQ2SivMfObM0HCY2280SKAB54ud2PlZlp3ydKaq01z4uJI8/6/ybXOhN68NNZutsS53yJ+Do9jqr9U= X-MS-TrafficTypeDiagnostic: SN1PR12MB0174: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 20:KRR97UsI70bomiI6kLRtFqt3x8JEqilb23VHI4JCW4V5L5KJ56348kTcTSIK9TAHrDhcy7cYVMoETzm05SEiyTLSbUhIhyPHPut1OK5sINP/h2Qw9GnhOoperWXYc9HyjFoyQxlPVi64Q0OfNJrdrwfCsjGdEAxDhxJq4PjGATpAOq45+cDNQWGGMMQslWrMQe0eqJxm3NbdQooG60sToCi6MkJeSGkmWPo6MPrJRIFwPs/ETHaIkNIPSAjaDRChXtNKLVuLe357COkdfNiUxtkRXY/BjW+NEBh4BdgTF9TKApALqv2f3+WnjZAg05RhZKPrpzcnoMHQP4dlZbN4EwQhAwdHMpk8gIMfmlxNJ79WCjpKUEp44TTojp+fIkBdhw9eZ7/Jv2xYP+PBMCITY7EgnO0klTWrDYKvfCmIcUQlMWVWlCvu2k6xaJ73JKR4UcdF/A59C9brmhHR1rpzY/63dQjTtCjcm7phd9BauoNLhLV5YtAl5JGqYhBLtP3e; 4:bnLRFrM1Om7Mz7SoZtTMVIDeEPkXcJ1uzcGZKJT0XVVivMxNWA9dd/9H26o/JZGeHzlAQ0eFg0iD8dAhpNhgSJoQcvDfB8GorbUiQbP7wPSE5Tkbjins3O1AfGmSUAIhCiyCHza2Cq6gFgL+j6pEwKdt0/dyJQfcW+UJXkQ2iKHRm5Ih+bRmxQxNOSjVt9RA+kSy99u2y775g7e5WVIlSNYVsOlA8B4uI0QfHvjag5S2/K706BTpQghFAz9yU4QPiKlbciEJvCx8lX2YlD2ghfayTLpiiJ2bJR++9vzkiCu6LUYXtKxQuTkyBKeVF7UPKtigtXefoB2CeiyNSpEpRw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:SN1PR12MB0174; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0174; X-Forefront-PRVS: 0722981D2A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(39860400002)(376002)(136003)(396003)(366004)(189003)(199004)(4326008)(14444005)(52116002)(7696005)(2486003)(76176011)(97736004)(55016002)(9686003)(53936002)(316002)(386003)(6506007)(26005)(25786009)(16526019)(58126008)(54906003)(68736007)(97746001)(86362001)(106356001)(2906002)(105586002)(8936002)(7736002)(305945005)(69596002)(446003)(11346002)(6666003)(81166006)(230700001)(50466002)(478600001)(81156014)(8676002)(956004)(5660300001)(72206003)(47776003)(23676004)(103116003)(66066001)(6916009)(2361001)(2351001)(1076002)(53416004)(3846002)(6116002)(476003)(486006); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0174; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTc0OzIzOko0bnJMYTFIZW9CVDhwNWdyb3FnUGM4TWJp?= =?utf-8?B?VHllT1U3RjR3WkhHTVpJRHNRdDFCaGtNaFhWU25JZk5uaFZLeEtDV0lFZWli?= =?utf-8?B?bUlaZ2lnY3VqRGpqUkdHMFRWTlpKaDNId21pb3B5clM3WC95THBoL2dYTTJI?= =?utf-8?B?T1hwbkVMU1J2clo4UG1mNno1T3poRTFpODRIMXVSNVlGZEZoR00zaDlOR3Er?= =?utf-8?B?eDE5K1JuNnNkS3dyOFlpVm0wK0kyWTZYTDVPWEczZHlIZjRSZUhhWHM5Z1lW?= =?utf-8?B?bklHaDZlRDk4M1h6NWl4a0xWbVVoakVSQWMraWhxMzhRUExldU05dW8yTHFj?= =?utf-8?B?YkN3UXB5WDdDa2sxay8zUng5bncwZ0VET1hESU5Iby9ONEE4WXF1UjduWW5W?= =?utf-8?B?cFlIMkNOcitMSUhBT2xDUFY0VU9xbFVOeHhyTjNEQ2o0ZEJwL0xSQUlyZFZU?= =?utf-8?B?VjR6eEdBQlI3YjhFWFp2TWZQYmR0dUlGQVEvaDdrUDRUaEUwWjdBS2Y1OGx5?= =?utf-8?B?aFJ3ZlJJOGh4em4zS21SVGxxOGQyU1ZCUWVIZU44c2kwZGcyMDhlNERLMzFT?= =?utf-8?B?dktxRmZ4bVBuQ05tY0J0WXdLMHJGNmJFelBzc3E3OHp4K293QnVlUU9jQXVB?= =?utf-8?B?bVBVYW04c210UmJ0WkFlTGt0aHJkSmI5U0Q0elB2NC8zK2s3YTJxQjJyNUQ0?= =?utf-8?B?NjFkdExRTWwxOUJSb3QzNXZlWlFCZzJrR3lrN1VPRUZ0aXZPb2kzZXllNG5q?= =?utf-8?B?ZVFrSzBtZGxOMXB6Q1JOUmh2aEZ4MVd6Ly9oWlZOWDRnaVZ6Q1NnR1dScGlm?= =?utf-8?B?Wm53Y0hVdVNEczY3QVFXdXVGTVFPbU9QUG1PQ3ZkZlJ3enRZb0YvdVgvWXRH?= =?utf-8?B?SjJFZ2dSQjk1N25kTmVKa1hKb1pxZFVCaFg3elNoaWFpUnl3c3RvZ0o1cDBL?= =?utf-8?B?elkzRDlxallHNVFvd2FjaktyRzE5Ti90d2JNblFac09xOXI1MVo1TWYzWndM?= =?utf-8?B?ZURSZjVYOEdOT0xkdXcwakFWdFovdUJHNENyTnNZQi9vQmxYK1B0RmJySVZi?= =?utf-8?B?SFlVWmdENW1LbU5tMUFzRlI2b2h3YVp5ZUdLcE92Q1IrSVNOdmdSMy9yK1Vn?= =?utf-8?B?ODNCdlNabFRvSVJlRUk4NzQ1RWpBNXJ4T1pUMWpoQkZYN09peXNEWDRxVTMr?= =?utf-8?B?ZThIVlFKdWx0ZWd2aGk5dVBEbHRtNVU2RDBnNVR1WSs2Q1ZWRTFvYjdkS1cw?= =?utf-8?B?ajVuTWp2bWgwVWg1V2dwR1UvSGRpdmtqeURicmMvNkxncGJMaXJQemxrclNR?= =?utf-8?B?QXVobzJrWVY2czhDay9laUdBdnlYYmx2QXFaMlU4eSs5RnhoNGtMaURhRzVT?= =?utf-8?B?NFlKaUxCak1HZEVkWVRiWTVJUGdmUlJCeW5TdmxJSUlTeEhVVVN5SEZoWHpI?= =?utf-8?B?c3YrMEZUdERyUjY5ck9GYTNpMnB6akJISHNDdzRTSGpSSFhrVW5tdkdRd0Jh?= =?utf-8?B?U0RoR0FjWVdsMkY4L1k0a0c0L0c1V2Y4VmpqUktrZ3VhOEw4QUtsdXpScHRl?= =?utf-8?B?Q0ppd0J0ODlVdE5lWDBoWWwzVlJSQTVxSzczV1BoTys1cVRWb1hvZkNZYTNT?= =?utf-8?B?bnIyWk90aURnak9raWRSZG1YRFh6NitZSm9LTU9uMW1XT0ZKeXZCYUhzN09v?= =?utf-8?B?OXQrNzhFTjd2VEpraDBYYWtpNTN5RHBXeTNMY05vWDBaMGR4NnNrWHgwSjlv?= =?utf-8?B?Nm1VQ2hyUXdWakpIT1RjbENmWlVPRjh3UGI2K2JYSk9xSDZmUTAzYzY4YXFk?= =?utf-8?Q?4gQYdGsDAjb3q?= X-Microsoft-Antispam-Message-Info: wLVwkzNuT+59Sfhu2iuG8xEEthjlIAB+ieqoy/qKSQ20nvcjTqax2q8yT1LOGzrMZCyngu03JGl+gLCwCdydb+ru2nzuuOyBeisqZ+KJyMkwGjURcM/JBuDH/64ydQFwsoA80S42clrHKX9eSZEhMi0PKOCuJiV9Z9r+jj314VUODAuU7/POmPgTZ/CBQ0W0Vv++Ls7AtU6vjiDUkavpAYx3R5YTtASH7ti8Ey1R32j690EOyG3Q7WtxudSLK6w/j/QT6szvyv99i3/l8tHkVNG1/8PHNS8xSN3X7851WHKNrTnNK/YmFn/B7C5mh7OPLX/hJgSOMv7825OM0Aa7XTOask2uQMnar54OkUGMXG4= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 6:v3khDwusgOvUDCS/7q1YihPVe5KE+s//wrLWAFobudlWaC9DS7YIvbCtpo08BK3cNVuAZUH1CrqEvzqt0+RwU3xr3R9t4YANduEDH7DdBeLpDWc1cKaVSswqC83vrpKWmmEGOZmXBj82Wx/4urfx4758S+Kt9P3+/DXtPTRWwfj5RY0eKrIWqyhqLF5OZZVr3JFXy2Mz+reJo6WJVzyJdHLksYv/uZ/fg6zp1u+2YruWD+iTPbH3gYW+4hnJNccMUd4uDvwsHI+iuDqEbNCo8hU8N3QSyBaAhbzmqwBrWiM3VeMmqAP4bn8uWHsyDdEA1ymJ9De+6hEaUhlmYRUZK2KJQStPIadSMzrKZgu5ITVtiXhQ9QvlTtV9pi6hEeQCQw54eiJ8R6O05kT5yN7ZI3N5Falwrt5Gr0nHsnPnbL3n92zcNgCxpbFyAtGiw//5P/xVf2GYhhqcbKPOYa9cWA==; 5:jFUtnyKFUdYc6D2wUt1V5BOWzC+WN9o3P/wYgEI333WPCyI+dZY5hqK6rlR1doXRdXq5/k0y8H/wkg4/94ZSQfmzLKwcQNm1wil8U25TxE+6n5GQS9IflU3IE970lEfbe+K1rjDKQryT2+tryBwkj6Dty3Hjk/GH7XmANX8Dyb0=; 24:1qzss8h2+B3lN2fbdTKv4PEzQXf0vkA1nMz+7sLqkRhv6OojOs1AIQrDzz/DRtiAxHKJ3dn8bWCRxUyJFof6TwaUSVOjNqlSaurfsJ1ZVd8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0174; 7:3b/9afmmivDFUdX96S8olgNKqebqxAYWdWd9TBdVRxsvwgNvqqouZIyL2Wy5W4nLvM1aD18Bl3yMCsCRLmRFp9Prx8+JIxfapZ4U/THKKsCWe8h/emTmHXlYfIv6T79xDFtTRcsxN9vgi+z3rmEfZVlwNsOnSa/Q3h3QvtKGJp0voFkY/e3lQKZNXmhwUY12+FGOxvjVWECZIw15SjONiAyB9mMCruLnbPQpIfi9UdvpSh7yB4U6l+G8PtUkSot9; 20:c6qFh1DaRxyCNNEU68ij89nwEGYRbcwe9w+Kb2dRasgRHQsQVaynKMrLyx3V/IPFYtkxTnPotXagAf8UHWpf762UMwXb7HpAq1m8bTi8O4RdsGszS6hr5KzPEhsvu84CM7Yh6kfbmwUuO/zzAdD7ELqDuXwEg8ZKwp4ePYcZuEOwlGe5Oim/r5uSfTbVtTzd3lIFK4aEaTfosSuOczU+n/06R678QjzI//Oirxa5F7XjNitNumgvRfY7TcBLIJq5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2018 17:11:36.9288 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab0a7375-c792-49e7-329e-08d5e1080952 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0174 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The wait_event() function is used to detect command completion. The interrupt handler will set the wait condition variable when the interrupt is triggered. However, the variable used for wait_event() is initialized after the command has been submitted, which can create a race condition with the interrupt handler and result in the wait_event() never returning. Move the initialization of the wait condition variable to just before command submission. Fixes: 200664d5237f ("crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support") Cc: # 4.16.x- Signed-off-by: Tom Lendacky Reviewed-by: Brijesh Singh Acked-by: Gary R Hook Acked-by: Gary R Hook --- drivers/crypto/ccp/psp-dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c index ff478d8..973d683 100644 --- a/drivers/crypto/ccp/psp-dev.c +++ b/drivers/crypto/ccp/psp-dev.c @@ -84,8 +84,6 @@ static irqreturn_t psp_irq_handler(int irq, void *data) static void sev_wait_cmd_ioc(struct psp_device *psp, unsigned int *reg) { - psp->sev_int_rcvd = 0; - wait_event(psp->sev_int_queue, psp->sev_int_rcvd); *reg = ioread32(psp->io_regs + PSP_CMDRESP); } @@ -148,6 +146,8 @@ static int __sev_do_cmd_locked(int cmd, void *data, int *psp_ret) iowrite32(phys_lsb, psp->io_regs + PSP_CMDBUFF_ADDR_LO); iowrite32(phys_msb, psp->io_regs + PSP_CMDBUFF_ADDR_HI); + psp->sev_int_rcvd = 0; + reg = cmd; reg <<= PSP_CMDRESP_CMD_SHIFT; reg |= PSP_CMDRESP_IOC;