Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp4010674rwb; Tue, 16 Aug 2022 12:41:05 -0700 (PDT) X-Google-Smtp-Source: AA6agR5tT8TV4ycSo+PFmHxAli/8avUVOy9K4Wa+xL+QgjclaGRxM/4/F72Q9N7JMhk0koFt3DWl X-Received: by 2002:a05:6402:5513:b0:43a:b866:b9ab with SMTP id fi19-20020a056402551300b0043ab866b9abmr20663122edb.290.1660678864917; Tue, 16 Aug 2022 12:41:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660678864; cv=none; d=google.com; s=arc-20160816; b=IW//TE+HNprENXqvCeXotJpiSykM83DfWDcJkJcVkrdWqen7qZtkZZ0PjRWY0xd7pd QxfsmACkXajCVz+i4VD4dTo0t+CXneX8HKTfTQQLvSmrsYtj89t9f5XZCvifrjQa7pnd jfOUFlmvwxKTPO+jfOoWVqZaB3L9WWZZyfP4jaODdInjYNgAE2YeiKUAoQv5pvPn38Ut dZ9j6COgCnZeuBGUtjJUFvjv9rp1hTRM0tyqQM0WdPfQaCfGOddxIOn/3Wr1mQtOWSTn QFNXmvVgNMnayBCBz1EpGHxFYfIryxvVZUhaYKgxNwxhqhP7GITt2Agim2Sh+NP3d5o9 hnfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:dkim-signature; bh=zO5It9jW5Ab8pMtnbQERYyQvcLS9G329Zpg9klZy+fY=; b=ceFxZLn6TH/5OgFJC9pVBRgwv4g4aAC5rqqcRu1yN9a0Ud/Cm9XlJ1bcAGKTKAHoLP qIbRGrCYWQ9cCPViBl+VHfZJV7Ii8S7hDYfsKKQypvtakBZ8grXtLI33tRhhjVPJnyrn 8YIUSbLILvCRTBspV0ItBtI+hoAkpaVZXNAdbOitnVxjwdkuzuCnKN1EuGAeLq/pjZzE p9l/DhFp8nqSh+MkBKR9M99k8M0TFjqXM3S0UxFEnDMak/3SFbZVaJ5aVljiSswOOFjj utQWmls57J5BqWDrIpvm/P2ZOfsqdqHXfZofB2hwucz9r08WEsJ3rXe+3L0E611aNVmg UXAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=T+3wMLEH; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f14-20020a170906390e00b00730a07ef039si9637083eje.423.2022.08.16.12.40.39; Tue, 16 Aug 2022 12:41:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=T+3wMLEH; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236836AbiHPTco (ORCPT + 99 others); Tue, 16 Aug 2022 15:32:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237144AbiHPTcm (ORCPT ); Tue, 16 Aug 2022 15:32:42 -0400 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FC2F883CC for ; Tue, 16 Aug 2022 12:32:41 -0700 (PDT) Received: by mail-pj1-x1049.google.com with SMTP id x3-20020a17090ab00300b001f731f28b82so10204375pjq.3 for ; Tue, 16 Aug 2022 12:32:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc; bh=zO5It9jW5Ab8pMtnbQERYyQvcLS9G329Zpg9klZy+fY=; b=T+3wMLEHCjZORIJaiQyb/vbWxoih9ExTmT/iYy0VeOAbdfsRLuvrYSTToE4xC395Hb 8rtiLr/+bk6o8eQJWJqlWeDY5kax4JvF31lxyhd8HZB+xu8X6tANByp/V74LKpJ0REPD 6pLIMWC6xQGG71NDBv5ZWed7vN5606apgAYXZgIMfucBRHWmDlTKIux54nivTe7/R14K zicKMMKXy34dlA/oMRiGtPBB/1rwKdXe2THDcBjz9UaLiUjPVULA/h5gQ/EEZbaHca+z 3+RK9IaXnsXtmt5VnfhFKdq61kcj1ZTSSuzevnFV5FV1qj1ZmkDSVgWCvmUol77mWgog 2raw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc; bh=zO5It9jW5Ab8pMtnbQERYyQvcLS9G329Zpg9klZy+fY=; b=Nmm4cMbTNh4KdvDyZ/uirwlkKCyVqAZ+cjgmGDkpFClUIORCkvuA96BbD9KaJv+LB/ Ln/5x5shrH0pztStVxWD503QrD+Of6+DvRgwqFklkdU7uxhfkg5tC840v1WEq0YmlENj up90e15RGu2ybFwlJbIpr+nCv6Ei//hDnytczk48ZXAoV/PdUp1gyy7wxKmeYX48tW7c d8taznZIhh2RQDtHxOPTdbYn0psUeAe8tVUaNs1bYhOC14cWQYSZC4s0rM189msDxzwA t5J/supN+XHP3NHHf9nN4Jlobav15jKNsvvoSo3fHJ4MpIARRq0VNp2Ime4HbzUI3p3J +QjA== X-Gm-Message-State: ACgBeo08eVsUUl9Cc2VSa4UMUliRc09CVx+IEXZ9qBD1yJ0O/GqV+/UQ 1Wj3kyQYGYKsRLMSFrmsN64+AUnLMos= X-Received: from jackyli.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3b51]) (user=jackyli job=sendgmr) by 2002:a17:902:710e:b0:170:8d34:9447 with SMTP id a14-20020a170902710e00b001708d349447mr23167541pll.126.1660678361168; Tue, 16 Aug 2022 12:32:41 -0700 (PDT) Date: Tue, 16 Aug 2022 19:32:09 +0000 In-Reply-To: <20220816193209.4057566-1-jackyli@google.com> Message-Id: <20220816193209.4057566-3-jackyli@google.com> Mime-Version: 1.0 References: <20220816193209.4057566-1-jackyli@google.com> X-Mailer: git-send-email 2.37.1.595.g718a3a8f04-goog Subject: [PATCH v2 2/2] crypto: ccp - Fail the PSP initialization when writing psp data file failed From: Jacky Li To: Brijesh Singh , Tom Lendacky , John Allen Cc: Herbert Xu , "David S. Miller" , Marc Orr , Alper Gun , Peter Gonda , linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Jacky Li , kernel test robot Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Currently the OS continues the PSP initialization when there is a write failure to the init_ex_file. Therefore, the userspace would be told that SEV is properly INIT'd even though the psp data file is not updated. This is problematic because later when asked for the SEV data, the OS won't be able to provide it. Fixes: 3d725965f836 ("crypto: ccp - Add SEV_INIT_EX support") Reported-by: Peter Gonda Reported-by: kernel test robot Signed-off-by: Jacky Li --- Changelog since v1: - Add a blank line after the variable declaration. - Fix the string format of the error code. drivers/crypto/ccp/sev-dev.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c index fb7ca45a2f0d..ab1f76549ef8 100644 --- a/drivers/crypto/ccp/sev-dev.c +++ b/drivers/crypto/ccp/sev-dev.c @@ -237,7 +237,7 @@ static int sev_read_init_ex_file(void) return 0; } -static void sev_write_init_ex_file(void) +static int sev_write_init_ex_file(void) { struct sev_device *sev = psp_master->sev_data; struct file *fp; @@ -247,14 +247,16 @@ static void sev_write_init_ex_file(void) lockdep_assert_held(&sev_cmd_mutex); if (!sev_init_ex_buffer) - return; + return 0; fp = open_file_as_root(init_ex_path, O_CREAT | O_WRONLY, 0600); if (IS_ERR(fp)) { + int ret = PTR_ERR(fp); + dev_err(sev->dev, - "SEV: could not open file for write, error %ld\n", - PTR_ERR(fp)); - return; + "SEV: could not open file for write, error %d\n", + ret); + return ret; } nwrite = kernel_write(fp, sev_init_ex_buffer, NV_LENGTH, &offset); @@ -265,18 +267,20 @@ static void sev_write_init_ex_file(void) dev_err(sev->dev, "SEV: failed to write %u bytes to non volatile memory area, ret %ld\n", NV_LENGTH, nwrite); - return; + return -EIO; } dev_dbg(sev->dev, "SEV: write successful to NV file\n"); + + return 0; } -static void sev_write_init_ex_file_if_required(int cmd_id) +static int sev_write_init_ex_file_if_required(int cmd_id) { lockdep_assert_held(&sev_cmd_mutex); if (!sev_init_ex_buffer) - return; + return 0; /* * Only a few platform commands modify the SPI/NV area, but none of the @@ -291,10 +295,10 @@ static void sev_write_init_ex_file_if_required(int cmd_id) case SEV_CMD_PEK_GEN: break; default: - return; + return 0; } - sev_write_init_ex_file(); + return sev_write_init_ex_file(); } static int __sev_do_cmd_locked(int cmd, void *data, int *psp_ret) @@ -367,7 +371,7 @@ static int __sev_do_cmd_locked(int cmd, void *data, int *psp_ret) cmd, reg & PSP_CMDRESP_ERR_MASK); ret = -EIO; } else { - sev_write_init_ex_file_if_required(cmd); + ret = sev_write_init_ex_file_if_required(cmd); } print_hex_dump_debug("(out): ", DUMP_PREFIX_OFFSET, 16, 2, data, -- 2.37.1.595.g718a3a8f04-goog