Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3801308yba; Mon, 29 Apr 2019 08:44:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqyP2Ydgn7qCHug2F3J7yjs2QYeLpvWhXErKsEhptjwNMWsHdmg79oiZBJ8dq4ql/yjgNIpL X-Received: by 2002:a62:3501:: with SMTP id c1mr39891182pfa.184.1556552683744; Mon, 29 Apr 2019 08:44:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556552683; cv=none; d=google.com; s=arc-20160816; b=zGNAPd9+XyRAVmGR1ap18z6vdb16K+5lNLcKoLGSxIdqBRP0Ti+HEpVyi28ctnhUp8 0+gaFX0Yq4CWHSulVtzfP5DB6p0+DI2nw1srBM9g7cwA1FrlaUig8ykZVxjGxbvHDN5E Ih/yj4ojFKNnWgvKmKhUxeXgl5+KG5k6IFp9FL7LTBctnThpMwIBkV9W1Nw/sD3ywSnc i1MDz7jYQqiExBvzr/9gtueIpCoNd09P+tyTJBUNZRmX+90Pn6tlte+P8DXZb5HiVjac 98d/7j5lfUAJIgl3OwGkmPFJDexiEPfBRr98ObiqmRaLw9S71OP+uPbedePlJNIarr4f ZHRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=cWyVdLKFdyupGa4samP+yYLTjJXACZ2RoCdDufllZc8=; b=BLiIp8EmUzPpohmvILoc+OvanFFEnc6pjLN5MoH/NGhOZOtn/p5+OYAtG6uCmArxjg YKhxzhtVzWkb1TFrhxIKhOvtBMWeRq3Y0ikLTSj7xGUbC6cXqfNfawAqou4ONu3UgNe9 gUs0sKB9Z2XMgYaL+WuXh1HKVA6RwCcm3gWDL6ZwJVIwfe8LohJVVj1OS1oaw+xw96U2 jrOKcicKCGv3UUAayy4IqF0skN522SXadVLQ5w69oSxjF6Dbfk2fdFMhIv2MyvA4mCmz 9FpJdKI5RkY73OvzPjg5KGzJ5ACjUGpMw7vgpGIQ5r8cPXI33UMG1jS/U8YXrP9UIBZ1 R+lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g33si32285077pgb.192.2019.04.29.08.44.30; Mon, 29 Apr 2019 08:44:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-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-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728520AbfD2Po3 (ORCPT + 99 others); Mon, 29 Apr 2019 11:44:29 -0400 Received: from mga14.intel.com ([192.55.52.115]:4157 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728438AbfD2Po3 (ORCPT ); Mon, 29 Apr 2019 11:44:29 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Apr 2019 08:44:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,410,1549958400"; d="scan'208";a="319990389" Received: from silvixa00391824.ir.intel.com (HELO silvixa00391824.ger.corp.intel.com) ([10.237.222.24]) by orsmga005.jf.intel.com with ESMTP; 29 Apr 2019 08:44:27 -0700 From: Giovanni Cabiddu To: herbert@gondor.apana.org.au Cc: linux-crypto@vger.kernel.org, Giovanni Cabiddu , Conor Mcloughlin , Sergey Portnoy Subject: [PATCH 6/7] crypto: qat - return error for block ciphers for invalid requests Date: Mon, 29 Apr 2019 16:43:20 +0100 Message-Id: <20190429154321.21098-6-giovanni.cabiddu@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190429154321.21098-1-giovanni.cabiddu@intel.com> References: <20190429154321.21098-1-giovanni.cabiddu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Return -EINVAL if a request for a block cipher is not multiple of the size of the block. This problem was found with by the new extra run-time crypto self test. Reviewed-by: Conor Mcloughlin Tested-by: Sergey Portnoy Signed-off-by: Giovanni Cabiddu --- drivers/crypto/qat/qat_common/qat_algs.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c index f9a46918c9d1..868fefa9bb65 100644 --- a/drivers/crypto/qat/qat_common/qat_algs.c +++ b/drivers/crypto/qat/qat_common/qat_algs.c @@ -1096,6 +1096,14 @@ static int qat_alg_ablkcipher_encrypt(struct ablkcipher_request *req) return -EINPROGRESS; } +static int qat_alg_ablkcipher_blk_encrypt(struct ablkcipher_request *req) +{ + if (req->nbytes % AES_BLOCK_SIZE != 0) + return -EINVAL; + + return qat_alg_ablkcipher_encrypt(req); +} + static int qat_alg_ablkcipher_decrypt(struct ablkcipher_request *req) { struct crypto_ablkcipher *atfm = crypto_ablkcipher_reqtfm(req); @@ -1145,6 +1153,13 @@ static int qat_alg_ablkcipher_decrypt(struct ablkcipher_request *req) return -EINPROGRESS; } +static int qat_alg_ablkcipher_blk_decrypt(struct ablkcipher_request *req) +{ + if (req->nbytes % AES_BLOCK_SIZE != 0) + return -EINVAL; + + return qat_alg_ablkcipher_decrypt(req); +} static int qat_alg_aead_init(struct crypto_aead *tfm, enum icp_qat_hw_auth_algo hash, const char *hash_name) @@ -1304,8 +1319,8 @@ static struct crypto_alg qat_algs[] = { { .cra_u = { .ablkcipher = { .setkey = qat_alg_ablkcipher_cbc_setkey, - .decrypt = qat_alg_ablkcipher_decrypt, - .encrypt = qat_alg_ablkcipher_encrypt, + .decrypt = qat_alg_ablkcipher_blk_decrypt, + .encrypt = qat_alg_ablkcipher_blk_encrypt, .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, .ivsize = AES_BLOCK_SIZE, @@ -1348,8 +1363,8 @@ static struct crypto_alg qat_algs[] = { { .cra_u = { .ablkcipher = { .setkey = qat_alg_ablkcipher_xts_setkey, - .decrypt = qat_alg_ablkcipher_decrypt, - .encrypt = qat_alg_ablkcipher_encrypt, + .decrypt = qat_alg_ablkcipher_blk_decrypt, + .encrypt = qat_alg_ablkcipher_blk_encrypt, .min_keysize = 2 * AES_MIN_KEY_SIZE, .max_keysize = 2 * AES_MAX_KEY_SIZE, .ivsize = AES_BLOCK_SIZE, -- 2.20.1