Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1931605imm; Thu, 21 Jun 2018 04:50:24 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJfwG/ivUxWTxaBjDKepJ6m9XvPRsnZq9PTkf3M/0lEYKEYb5Nsau5AmUwpODLqONiwtSYX X-Received: by 2002:a17:902:b611:: with SMTP id b17-v6mr27753803pls.284.1529581824053; Thu, 21 Jun 2018 04:50:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529581824; cv=none; d=google.com; s=arc-20160816; b=Qulh9MMda61ubrVKs5ytmzDSfbvDxnO/fqLmrj9rgzDqpRp3NKVgzgSYcS0nWcOfEQ xC2CU1ANeHYhVYcuj2b2EtYa0imuZj9JAyksQVqz4cKkTCanvtjdsv3O1cnYjs39chJC 8dP7jmUhbChoj+NQS+YTHUyXxDMpDGySJO+eIFqVSnf/HTa4zyMEsfhKsmEXQ3bBzdRw obXMuEAbSMrLVUvZvj7Q2ux2U5K1TKLpA1IO5URWgk+CK3dxJb6BO4Q+SaXFoLcpJsJA R60oS8eDUJM6IF8ZSbTk2t1RztM2Vh6sK8TpgSJCgRP/fzKnXDg9hwQEAMhRcWNtCiCV t9xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=kGSHzLiah8Zn/9a4Wh2p0M/dUQxoBy6opUFuONTN8PM=; b=CqrVhxMQOWxpKMzJ5mexW3Gh1isbkS/Xi7aYw+EkI85geDBL4awokukZzbihXXdnN4 v/NqH/p2eMTWVOq+dNj4DRJoqBJsuuYiNAWh7i5VYpp4BHX3kQFposgT9OMNfLsmZd6U TALk8K5OGabcgnDl5Lc/e2TcGcZG4EcMAoYH4iMrzxVCee5aa+EbWpLijRWirBTmYcpT 8CZy9MnO2wRCO2rJAZvmrT+QCaTsQ9v9f18vAo4+pEbvzuCinxz2qBmPdpn9fyqPtrnv ri6um4UHm5H2Shpb4whF9/yoNLdRJpdu0005vc6wGRfikDTy8g6YqKjlas17Hzb6LTPj wpPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t19-v6si3787334pgb.196.2018.06.21.04.50.07; Thu, 21 Jun 2018 04:50:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933250AbeFULt2 (ORCPT + 99 others); Thu, 21 Jun 2018 07:49:28 -0400 Received: from foss.arm.com ([217.140.101.70]:48908 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933130AbeFULt0 (ORCPT ); Thu, 21 Jun 2018 07:49:26 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 566331435; Thu, 21 Jun 2018 04:49:26 -0700 (PDT) Received: from ssg-dev-vb.kfn.arm.com (unknown [10.45.48.23]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 310863F578; Thu, 21 Jun 2018 04:49:24 -0700 (PDT) From: Hadar Gat To: Herbert Xu , "David S. Miller" Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Ofir Drang , Gilad Ben-Yossef , Hadar Gat , stable@vger.kernel.org Subject: [PATCH] crypto: ccree: fix finup Date: Thu, 21 Jun 2018 12:47:32 +0100 Message-Id: <1529581652-31294-1-git-send-email-hadar.gat@arm.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org finup() operation was incorrect, padding was missing. Fix by setting the ccree HW to enable padding. Signed-off-by: Hadar Gat Cc: stable@vger.kernel.org --- drivers/crypto/ccree/cc_hash.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/ccree/cc_hash.c b/drivers/crypto/ccree/cc_hash.c index 96ff777..e8bb934 100644 --- a/drivers/crypto/ccree/cc_hash.c +++ b/drivers/crypto/ccree/cc_hash.c @@ -500,8 +500,12 @@ static int cc_hash_digest(struct ahash_request *req) } static int cc_restore_hash(struct cc_hw_desc *desc, struct cc_hash_ctx *ctx, - struct ahash_req_ctx *state, unsigned int idx) + struct ahash_req_ctx *state, unsigned int idx, + bool hash_padding) { + enum cc_hash_conf_pad pad_conf = hash_padding ? HASH_PADDING_ENABLED : + HASH_PADDING_DISABLED; + /* Restore hash digest */ hw_desc_init(&desc[idx]); set_cipher_mode(&desc[idx], ctx->hw_mode); @@ -514,7 +518,7 @@ static int cc_restore_hash(struct cc_hw_desc *desc, struct cc_hash_ctx *ctx, /* Restore hash current length */ hw_desc_init(&desc[idx]); set_cipher_mode(&desc[idx], ctx->hw_mode); - set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED); + set_cipher_config1(&desc[idx], pad_conf); set_din_type(&desc[idx], DMA_DLLI, state->digest_bytes_len_dma_addr, ctx->drvdata->hash_len_sz, NS_BIT); set_flow_mode(&desc[idx], S_DIN_to_HASH); @@ -572,7 +576,7 @@ static int cc_hash_update(struct ahash_request *req) cc_req.user_cb = cc_update_complete; cc_req.user_arg = req; - idx = cc_restore_hash(desc, ctx, state, idx); + idx = cc_restore_hash(desc, ctx, state, idx, false); /* store the hash digest result in context */ hw_desc_init(&desc[idx]); @@ -644,7 +648,7 @@ static int cc_hash_finup(struct ahash_request *req) cc_req.user_cb = cc_hash_complete; cc_req.user_arg = req; - idx = cc_restore_hash(desc, ctx, state, idx); + idx = cc_restore_hash(desc, ctx, state, idx, true); if (is_hmac) idx = cc_fin_hmac(desc, req, idx); @@ -704,7 +708,7 @@ static int cc_hash_final(struct ahash_request *req) cc_req.user_cb = cc_hash_complete; cc_req.user_arg = req; - idx = cc_restore_hash(desc, ctx, state, idx); + idx = cc_restore_hash(desc, ctx, state, idx, false); /* "DO-PAD" must be enabled only when writing current length to HW */ hw_desc_init(&desc[idx]); -- 2.7.4