From nobody Sat Jul 25 04:55:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E448D34CFC7 for ; Fri, 17 Jul 2026 15:53:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303641; cv=none; b=HxPRTkOUc4qJZl41pUiF2UzP79Hdn2vhyJ6YtUTyFpRrGnRP0gaLKhXwpDcnCbCVfnCE1jVEjXUyd7HYywjsXhI+M+k7+zn2sGWNsXpbV6z9PkGpop5H9RDz29xzefHx3eoPv8X/1zc0Ztf2M3Bn+mCrKyLvniWz4G2tj8QCYTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303641; c=relaxed/simple; bh=CIm+OFp5Nm1xQddRse/kgkRqbKVFHtQ2VOHAIUGGPho=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ptN/TjH70NvEt0kv/b57V/+HfelhHs0X9EZ47dn+GTy4wBYgGbvtccH62JEbbF69Oi5F2Xe2M1D6MIboc2zGMMCZbRyHvDW1+E0/+2JRuLCpn+GJzTKc5TxzUE37XVTM7NTD83Ryw+KR4KPQ1TDtjqqkAmAK9bB5cpidt+XGD04= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=eJraoD7k; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WBM54rFO; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="eJraoD7k"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WBM54rFO" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7urN1875204 for ; Fri, 17 Jul 2026 15:53:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= aMqbdOpIropXCADEsUAHHr2t4mshJ33rF/tISH1SWLs=; b=eJraoD7kfA5wnpap m8tg5eVOG271ZnUvPCuC0ECO4/jLdCSgHKK34/ty99vOrOGGtTBWw1oxoVv5cAHZ b9VFATa0YFZnyW7tisiuzlMIYPtWZ6A5+jO/UopEcu8yx3iGFm5dQtKWLjCklfRU vmcwrtXsfnZLtDJKNyJb7Ml28q1NsgBi6wq5ZcySURi+mjrECTdAhNgL4WZPgqah joy2g71ghcLKWlS/9LQxHoo3XYiOYuDlnuRL8Q7sUkSa1CTPXLTTer/1rESq138o PTrltpYv8dNV8sZpISkwxMo80iRg4QdHT3/lwDdAd0dGd0xSFDBrAHfS3SBKaIfk TSZLhQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fff9pa4q3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:53:57 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c26012cd0so137720381cf.0 for ; Fri, 17 Jul 2026 08:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303637; x=1784908437; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=aMqbdOpIropXCADEsUAHHr2t4mshJ33rF/tISH1SWLs=; b=WBM54rFOAvmt5lrdid1oYdEhJczzT4EWQobvlQfjDOC8l50LBUmadid+F8UsL4/Bsm pK1SzUriRTnk+DkwULuvFV9Ow71ihTY+uQur4TLFcUS0nI39QrFR33rYeOIn7WQyARuV Q3h384cofjXbFWEz2aTKfFYXTcEZleg6H6Uj1IidtsUh37YXo2F0g5Th3qGdxrZEF0aL Y9d1WXV3Nj9BwcvapRemumvT+Yv/GvF343OIxhA8p1QUYjf9zwIgcf8fWd/GVgksCOQq Onin7tmYON1VPAgIRWhgLYkUNktpKCN3VEtGsS7nOOqnYpgSgIBIEIO7zkQL5Uwtm9FM kgFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303637; x=1784908437; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=aMqbdOpIropXCADEsUAHHr2t4mshJ33rF/tISH1SWLs=; b=IgYEnWFss4ytOzsvvDPeZZAylRFjFkMdblMbreHNyidtNxwoawaL6dCW2OMqB47SYV LVmff/XknlVvEliVb6uPdfz1xFlgRiN1TBi0z5h3AOpFi6mEdeVSmz9I3k44kbEa+kst aqYXl0CW9fM9C0E1O6oRcm4rblZ4NRAQCzG6Pb3lCDqT7tbh7GhfwHwLjkefBpV3Snk1 f5/HN2Vkk9jL1cUH6TNhAsX/giyXDGSAEyfdO5usP3Yfrm5o7tkkEHdTn8YFPCrc3SHC WqcdQ5cGiSCCubzG2Y0VQ6NWEPcI+b+KoohvD9xxjyTasoZ2Tu/GSfxL45ZdBHqd1sDp yHrw== X-Forwarded-Encrypted: i=1; AHgh+RowiGY+PQiO3xKXxqbjvwh1STTIcb6B8t5m23E0kguBGZ4GdPtaTpp6kox70he870D+9VBSYdc4qPsRRg8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0NN2FcqnNNAQzNwVs3i66XOwm+bkBi7h3W2f1upy5gYgl+WbO HqpTiihcsuSICegeCYZZfIg2mrrBh1GEbPlqw+jUUxeyvupWOmpRVS0CKC5d3LbXQKQkL9z8KTy +QtbvNkeNGmtPsPkKUmUWwN8GeID5kaVlrE/fwyIUnpY6LbFgFW+8kO/rLG3TSQHrNQs= X-Gm-Gg: AfdE7ckE5N3ZCnhmEf2scwRZwdA6B/BtPnSzYH5Vmb3vWRUdwSFvw9uI3y5gY/+YmLS cblqdRjLkClgCfZrglScpOipeU8GdaYhRiyev4FwRgZG9oE3AaQvgOEc+g15OLauZlxaa7B+UL0 5geGEPSrF9N5vQ4M0zQAiX8R6gEoWYMI0Btraz6JGYr+96b7H0mbv2w03hNuDDtZf5G291U6rSu 5po3n8zOX7nPV/vvLWfK0yQ1nmVrZ/+2kTUNOwgrF/hH5kEQKhFrSuXb9sTRlmNrV9h4YEjcgbq SwKlsYZFXZi4x9tX8MD/hAd4ulEZvjlDbfNPnOn0RchI0+RdS/W/SiI/2K1YxH39TpJYyPWr0VU 3AbqnVWWe8LDtWQrUh9qmuJnu0iS+lA== X-Received: by 2002:a05:622a:1a8e:b0:51c:478:32a1 with SMTP id d75a77b69052e-5213bb216b1mr31172561cf.18.1784303636804; Fri, 17 Jul 2026 08:53:56 -0700 (PDT) X-Received: by 2002:a05:622a:1a8e:b0:51c:478:32a1 with SMTP id d75a77b69052e-5213bb216b1mr31172241cf.18.1784303636353; Fri, 17 Jul 2026 08:53:56 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.53.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:53:55 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:30 +0200 Subject: [PATCH v6 1/8] crypto: qce - Fix HMAC self-test failures for empty messages Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-1-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5101; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=CIm+OFp5Nm1xQddRse/kgkRqbKVFHtQ2VOHAIUGGPho=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAH3isuiL6By3Bw2C+V0aJJnnjvI/ejHwyGV V4U6yBqn4aJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQBwAKCRAFnS7L/zaE w2rIEACg+QmuikTyoS3d9YDDi0u32F0LDWMviw7k6QgAGu6GYIvraxfCCmayeU/OaSr+uPLMwze VB01G+dodcKPjCIJU/q2HVzdZfeDN0rEHRO7qpwKHntDbvgCe9/xJwPx3Thf9ioVvo60QeudSZh SiEireITOTfcq472mG6h0AkQUjBlAOEcl3HApFzkWH3obBO8g8YGZhKHnxpg8Q8jfpbb1tF2EfN wcPpi0FTPq8RwxdGoosqdXKna1K3Gt3L8XklxEA9gYntTJZr7CLqkKu8JWrSN/OAvkFezrLFmob Ea88g/q09GZak4/4MBA6RkFDj5gw8F6Y/pm5vgfNoOmCEYh5OGv6lAfV4lkiBLCwFV2g7TnXRi9 mDAxo+1rNrEvS3Dw2dmL/yItmDP9U8Llu9jQpPaeYpDVftLelYrCHrMRm+E7FzehO6Wf2vx7oTD lon2l5lBi7KScE7Y/6dHXkOpypjj1ago7NfqNlkQ2Wl7l1xfvOzctI9BrEOTJxONcSzBEkQawoI igdR6kFF4/7qgVTegdI+Kolh1M97uUV1IBl+rWLt9O2l2IwWEdYcPrH5BbJjQiMOi2gvjDYG0zx QWtZtwsrdmV7Y0RJJWYIvY+dBhIBA51qFNDweBacekKDhRWUP2O/w4MCoODJg9CW4vX5aai0QHY l0nMhKBX7By+OkQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: xNzla-qHEu833QcRR5AXpieEHYkIGuTq X-Proofpoint-ORIG-GUID: xNzla-qHEu833QcRR5AXpieEHYkIGuTq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXz2POM1LRr4oU ZSiyLVZp0rLwE9pwCIlkOFo9l+Jg8nro/GQUpLQlETxGMh/AzFQA6cu/ijaS9KxifGSO1VSHixb I/aDB9iUjbL9IDSDQxeSb96nPLctMoqETlkDZKDfAKEf9vuzra2F5oyKWzxgMof5eLVbJvoNieh I9Ec5P9bpv2ux2NZ6/1vfef60q4zQ/tDstMjnv+E+sSiVOx8rlVQaA7Fm/EfPy9DLxYtWnx8DuS ppbrBovRDJhsmAGIQRMO//G7k2RNASCiCZf7S9eMdVC1X1UvcCMOXCspMcO6NWn4bNLCWo9U5fx 5C2dqm4ED3Pji9mjLl5Oq9AgKKR8L7cTxrqZOSJjxx8fd1X//bhfgd1SX6HWEY+FUzVWCesfZ91 kB68/R0O2eSJtG+AF8hn/K+yRb3usp0QWscuNDRGahFLo4VygR7w0CkCdenB/+6qd0EM7HfdBnG 3n72O07lYOPCQXzdrJA== X-Authority-Analysis: v=2.4 cv=TaqmcxQh c=1 sm=1 tr=0 ts=6a5a5015 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=7HxpRQPu5N1oW2hdKb0A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX5eqHpD+kh536 /7LE7rK8ZK/qGpQOIOTU7HDOzd9sRWIWr7saSZmURERuCGRVfm+aCzxnoU7yCpgvKqBWLrJG7dX L6L2kcZcPXobhzNPQzkKrcoLBNOO7Ws= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 BAM DMA cannot process zero-length transfers, so the driver always holds back at least one byte to submit to the engine and only ever finalizes with an empty buffer when nothing is left to submit. For plain hashes this was handled by returning the precomputed hash of the empty message (tmpl->hash_zero), but HMAC's result depends on the key and cannot be constant, so hmac(sha256) produced an incorrect digest for an empty message and the crypto self-tests failed. A zero pending buffer at finalization time does not necessarily mean the message itself is empty, though: the caller can also reach it by importing a state that already reflects some hashed data with nothing currently buffered (crypto_ahash_import() followed directly by finalization). Special-casing only a genuinely empty message would silently compute the wrong result for an imported state in that scenario. Handle every zero-length finalization consistently through the software fallback ahash instead. When nothing has been processed yet, let the fallback compute the result from scratch using the key already propagated to it via setkey(). Otherwise, reconstruct the fallback's running hash state from the state kept by the driver and finalize from there, accounting for the HMAC ipad block that the engine absorbs internally and that never goes through update(). Cc: stable@vger.kernel.org Fixes: ec8f5d8f6f76 ("crypto: qce - Qualcomm crypto engine driver") Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/common.h | 1 - drivers/crypto/qce/sha.c | 58 +++++++++++++++++++++++++++++++++--------= ---- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/drivers/crypto/qce/common.h b/drivers/crypto/qce/common.h index 9cd2e6ed8bbb0f76e24be187d8ae7e2fe2f7b932..587d349da91d1faa2bed7cd4883= 06d4358467b2d 100644 --- a/drivers/crypto/qce/common.h +++ b/drivers/crypto/qce/common.h @@ -82,7 +82,6 @@ struct qce_alg_template { struct aead_alg aead; } alg; struct qce_device *qce; - const u8 *hash_zero; const u32 digest_size; }; =20 diff --git a/drivers/crypto/qce/sha.c b/drivers/crypto/qce/sha.c index 2215d6023fa5a06d741dea8e7c4ee8ec0a6cc45f..ac2d22d55d0838c2a7f12a4f338= 7c5d5021bb55c 100644 --- a/drivers/crypto/qce/sha.c +++ b/drivers/crypto/qce/sha.c @@ -249,18 +249,53 @@ static int qce_ahash_update(struct ahash_request *req) return qce->async_req_enqueue(tmpl->qce, &req->base); } =20 +/* + * BAM DMA cannot handle zero-length transfers, so the driver always holds + * back at least one byte to submit to the engine. A zero rctx->buflen at + * finalization time does not necessarily mean the message is empty: the + * caller may have imported a state that already reflects some hashed data + * with nothing currently buffered. Handle both cases through the software + * fallback: reconstruct the running state when there is one instead of + * assuming the message is empty. + */ +static int qce_ahash_finalize_zero(struct ahash_request *req) +{ + struct qce_sha_reqctx *rctx =3D ahash_request_ctx_dma(req); + HASH_FBREQ_ON_STACK(fbreq, req); + struct __sha256_ctx core; + struct scatterlist sg; + int ret; + + sg_init_one(&sg, NULL, 0); + ahash_request_set_crypt(fbreq, &sg, req->result, 0); + + if (rctx->first_blk) { + ret =3D crypto_ahash_init(fbreq) ?: crypto_ahash_finup(fbreq); + } else { + core =3D (struct __sha256_ctx){ + .bytecount =3D rctx->count, + }; + + memcpy(&core.state, rctx->digest, sizeof(core.state)); + if (IS_SHA_HMAC(rctx->flags)) + core.bytecount +=3D SHA256_BLOCK_SIZE; + + ret =3D crypto_ahash_import_core(fbreq, &core) ?: + crypto_ahash_finup(fbreq); + } + + HASH_REQUEST_ZERO(fbreq); + return ret; +} + static int qce_ahash_final(struct ahash_request *req) { struct qce_sha_reqctx *rctx =3D ahash_request_ctx_dma(req); struct qce_alg_template *tmpl =3D to_ahash_tmpl(req->base.tfm); struct qce_device *qce =3D tmpl->qce; =20 - if (!rctx->buflen) { - if (tmpl->hash_zero) - memcpy(req->result, tmpl->hash_zero, - tmpl->alg.ahash.halg.digestsize); - return 0; - } + if (!rctx->buflen) + return qce_ahash_finalize_zero(req); =20 rctx->last_blk =3D true; =20 @@ -292,12 +327,8 @@ static int qce_ahash_digest(struct ahash_request *req) rctx->first_blk =3D true; rctx->last_blk =3D true; =20 - if (!rctx->nbytes_orig) { - if (tmpl->hash_zero) - memcpy(req->result, tmpl->hash_zero, - tmpl->alg.ahash.halg.digestsize); - return 0; - } + if (!rctx->nbytes_orig) + return qce_ahash_finalize_zero(req); =20 return qce->async_req_enqueue(tmpl->qce, &req->base); } @@ -431,9 +462,6 @@ static int qce_ahash_register_one(const struct qce_ahas= h_def *def, alg->halg.digestsize =3D def->digestsize; alg->halg.statesize =3D def->statesize; =20 - if (IS_SHA256(def->flags)) - tmpl->hash_zero =3D sha256_zero_message_hash; - base =3D &alg->halg.base; base->cra_blocksize =3D def->blocksize; base->cra_priority =3D 400; --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 957813F8881 for ; Fri, 17 Jul 2026 15:54:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303642; cv=none; b=fjD726oQC8fNaK/PnDdXixXUln2t8YQbI9RBq5aQO7GYK0mYzTjwG689un9vpFbJLQ45euvKTANKBU9b/Ucz+hxiisjZahzB5Sgg2kGJTI1yCfh0CpqakzpcE+FlO5J6IG9MidcOmD3ui3E95pNFNoPluwyEdhw9WDbqho2lI3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303642; c=relaxed/simple; bh=c+mrubN7rsfOnXUrhAmKfIPiEiFtp1qvBtE3BukFaZ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R+fqMLO0Ajrn9V+5a2qIOdvwxq1EWCWvnJxxTlFJEFeWHlaSISjLRwbhoVmDkgOKoyZcWc4ufC1KMW+GKZWXwXVt5aZaiczqB9FHOMTu7QjafUPmumTogQbZmNLVG039B25tDVQ91I3BJaysnhesgHt6Fgbqd0c29pXu0ycwBv0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=CZ6a34Wi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UIbUebNl; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="CZ6a34Wi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UIbUebNl" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7oT21838832 for ; Fri, 17 Jul 2026 15:53:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= su379PS4fCpra/SUatLozY865KIfA6SXq4/i5am3Thg=; b=CZ6a34WiUw/WrrZ1 N61tgxau6FXPk/q7pIv+pdg8r0hthARXrJURahnhsibXj26LmowiSJ0By71s8Th7 jfOHtCL05JXqaP6lAK+JekQ73R37CQoNF10yRJtgp4WnoKMkaobF2H5k6iC3iQ/o zET6TppVxmqlh87vB2T2qwhSh5ZNkkU++kE3iN152IP/aoiIHq73TsqUsNvDDOhz JHMwPM9sigvU96np1ZbbbHQWyU+ASHWWeRqtAUibDq55cPdFO/TcYpKuyRjwMHK6 1e51lF1KPgKb9T7BJXZJrtHb0Y05+YOKaR8wxbL8tEv9QgNBNabmnGnhPPwqH04o 7GkVLg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fffaga24r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:53:59 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c07f25de2so64253621cf.3 for ; Fri, 17 Jul 2026 08:53:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303638; x=1784908438; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=su379PS4fCpra/SUatLozY865KIfA6SXq4/i5am3Thg=; b=UIbUebNlQefJcJWmZDCaOSKYNIUdCDJ7Mop5xvkvdrsZmEgjqGLfndJXHnf2jgq+JX mhr7SRtbI7DYfqvrydypPt9IBa2RoPA77zhjYfU3oEqkHStXE9SxeINCtHReVJX20mA5 1c5Q8GHWlXLQWsn29scV5/sZeWxf+pLVFN12j0PbYTo3SjvcpKVxD4s3OFO9v+ZtONcN iGVBmCtFt1URaZ81hizdV1RgOknRd7HLAkQHfzY9t9Pb0o3hHPQ+UL9MIlLdhtEPYnDb sIiiNw4mY/d4vj6wmCvOFfc3zFDUfab0yUHkDjJVHaU4wGd/OjHuwqiJhTeHSI6fo74B 22+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303638; x=1784908438; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=su379PS4fCpra/SUatLozY865KIfA6SXq4/i5am3Thg=; b=I9+61nN9+U2V6lhsoBi3N6NGRDJPJJqYvoY4FQx7p+QhHbT6CUM4/+xMgs55HoRwSD VEG+g22zLOkvId2UK3tv3dsEECLuQUp+XQEPIOh1EygZKRc6s0efg2zCINJ2E3R5mF+c eih7z0yMZJWpT4GilM8SkbeOmSjd6RKpyDT5VW2Nepc1WC7BJtcyVk+7F5cLOKZJviG8 XNpSrmtY1OPUGg5LEWlNjpxFle3aJ9Le55bjSNQZErAcZkTa46PFf1CuSEarYrNa2Gcq 4dvE+Tu9GCAH86xzySOpjdy22TN6jE+153Pim20kGj4Wjn5KNWtdIadDf2x0lw+YAENT FjzA== X-Forwarded-Encrypted: i=1; AHgh+RoFw58yv6aDMo4SOyCsKPfrAqPwv+0QbcRN8LnPUqTuOR7DLeLc0lGrKalD+2hD/W7b/X0A8WuW58VFhSE=@vger.kernel.org X-Gm-Message-State: AOJu0YzWmH5cc0rUU4WJlISgb+0Q7tpDlUwbLRTOpiIdIQ2NSygtOqho B1DCwYQ0jw2RTVQSxAO+bEqfzthbqnB9HIyDmnaswYjM/5OHzslHPyZz8dWAefMCqlI5vy7Ez7k 6UGDni23OGV7FIYFjWt2qzn8cMfaMB2srPz9bzhX6yYfLD1lrthBkLiyxmoMykdAQWUYnUHyflJ s= X-Gm-Gg: AfdE7cleUIkLdhbetT38aw2Swe9+n8BqRcD/1sXT/GNDLyCuhoumRFh7R1N0GZfBSHT 0l7WFG+EeI4G5yaHp0O89spqVFW7Vyv+Bxteivb9mpiLyxdJPIPQuaCvzTvQYm3AW9fR39c+e9+ gAur8o13waBuWCKNJK0E4bKQ24wmIULqzrdjynxcgmY1cBYGjl4idc/XbVaDfMP5upxQQ/zv1le /w7aUCnvJGDgxC1cLKTRh5gR6ZJWH78r+7t7u955RfeWFIEL0C8rg15uI0PFeGi5uI8oZLQv6Kr 6xHQENEhXTQK8FG0Bf3VwLAeREjuTTvBucZFXGTfZsInnyGgBJcdD5MQd/O1adr8jaAsrXSDnrf Ey9Eg4VK9cqf+1k/xS189NB6m0f6wBw== X-Received: by 2002:a05:622a:c08:b0:51b:fcb4:7576 with SMTP id d75a77b69052e-5213aa6e50cmr27491131cf.15.1784303638580; Fri, 17 Jul 2026 08:53:58 -0700 (PDT) X-Received: by 2002:a05:622a:c08:b0:51b:fcb4:7576 with SMTP id d75a77b69052e-5213aa6e50cmr27490921cf.15.1784303638195; Fri, 17 Jul 2026 08:53:58 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.53.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:53:57 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:31 +0200 Subject: [PATCH v6 2/8] crypto: qce - Reject empty messages for AES-XTS Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-2-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1491; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=c+mrubN7rsfOnXUrhAmKfIPiEiFtp1qvBtE3BukFaZ8=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAJLk8kf+WO4QPge6zzsH6iLkYm/a4I6uEUB rNcxsO73RiJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQCQAKCRAFnS7L/zaE w08EEACNbC6vHABktCcrqSfMiYaJc6A+6pG66OGWUFdrHM7aOGe2iQwkorloHgWFT5SCmPQoQQe 3Yiqy1+ewkNYT3hUZIIc/5TB252yq6PL92CZGpNLDB3jyR3OX/m2XU16Dg1jkrDhEyUuq3BbfR1 Iv2oOUkByizuoYqiMcJjwIk4kbKwKJ1Mr3PEakYaNNCiePr4NhR7Is7gsjF9Li4muP5BsaaK5B0 gp6n5ty2GyW7HFEI1Fi16TLsk/yhgoR6OFrNiMz5eXrUw5S/k9CpzjS7CnjcJQ9io0c9Yh8QU/U wpGjSFGU37L/2dfozPJc+cUKOB7ZfgEivyeyH1Znua7szBunnLROQI3TWTrV2oQU18kbMt+EyIU 48NS9NgZAStB1xiAQgtbe1ElOj9evZ76TqRPVdZuiaJ70lR5/AZ9T1kNjWyPk017x8YI8ce/3Rq Ezxk0FZU96CzWaEo7QgoCMYRI73WqO2lZB0rLGuqEt2UdWqFUjKD4t2pc9tJoQ24+HD0TWVF+b2 OPlK7cy8skUC9DR0vg5+uKTwaTC/BFM2CP1qhkJIDAVU+RFbsnx52wgt0ktXlmqUIF5Tr1cP4+v n+KwYRFbxSdXFAXFUGoxACXWUNWVv7c8aakCie2VZxZUQn+QprmhyUgTuiU7w6E4U4PLM/fjuct VGupaDD8FkAt9kQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXwJbSYE156Rzi 3lYj5Cmdj526P43HrYQ9ynOerqyt4/C38gDKuWZEBj+P0yLgsfHEST1NidvkFG3CzAFx8oUO4eZ 8kaMPWtffvlMmr32GBLizMMveij7XBg7A6vwI7E6MWna90mMZN2xgpQDTu7V7NoTHWcpUWU9kgu LH+VrKHl15Ywk9cwdRPhoVACQ6tSzmKp53QElivkX4Fvxow9fMfGK44Cd9DpnsksZTfAELyCAhD fWR3jNSdCBfFQGvNCBW5juwAjbDsefbp3CsfQX9TSh1oEMcoAml+HAZMOpP9sQdcyz5xfAcH9aO iXH/hw3YF+Doh9PdcYzbW902IiKdYaWkBgGQ3+4T5XJ+GJ3j/w6Zh8VW07B0PJ6kAqAOt3wGOEa mcyuTzfHLqgyNj2oVz24XyRELX3HL6Yqm+Atlx/OTSbKOJ7ncLEjeCD8YGROU4vGeVTPeMcUFnC 6tJCpYGkpofMHw+iydA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXxSbLsYAd/2Tb OhgZP0QnihuETw7j7bfznHm2dbrqSkFgl219N5t06Epffw1cRg0j1epAo3inynCFauxYw6YShyZ twZXVsxqYHW7LVBPYUFdmW+OiZgN4Jg= X-Authority-Analysis: v=2.4 cv=KZfidwYD c=1 sm=1 tr=0 ts=6a5a5017 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=kiYxeA6Iecqc4QeK3QQA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: ID5VdX2yHzZ0oJ0-JKy1C3RpmFJ3q1J9 X-Proofpoint-ORIG-GUID: ID5VdX2yHzZ0oJ0-JKy1C3RpmFJ3q1J9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 clxscore=1015 malwarescore=0 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 XTS is not defined for an empty plaintext: it requires at least one full block of data. The driver treated a zero-length request as a successful no-op, so the crypto self-tests "unexpectedly succeeded" when -EINVAL was expected. Return -EINVAL for empty XTS requests while keeping the no-op behavior for the other ciphers, which the crypto engine simply cannot process due to its DMA not supporting zero-length transfers. Cc: stable@vger.kernel.org Fixes: f08789462255 ("crypto: qce - Return error for zero length messages") Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/skcipher.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c index b27008ace93a8a40c291d564c3fb9d73df5447ec..e1f69057607fac36e8b4bdb5dd9= e62a2aabe5f50 100644 --- a/drivers/crypto/qce/skcipher.c +++ b/drivers/crypto/qce/skcipher.c @@ -223,8 +223,12 @@ static int qce_skcipher_crypt(struct skcipher_request = *req, int encrypt) keylen =3D IS_XTS(rctx->flags) ? ctx->enc_keylen >> 1 : ctx->enc_keylen; =20 /* CE does not handle 0 length messages */ - if (!req->cryptlen) + if (!req->cryptlen) { + /* XTS requires at least one full block of data */ + if (IS_XTS(rctx->flags)) + return -EINVAL; return 0; + } =20 /* * ECB and CBC algorithms require message lengths to be --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93DA042B306 for ; Fri, 17 Jul 2026 15:54:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303645; cv=none; b=mkHUaZSM/J4zn7CHGWtHSF/RtFNhXQhqdZf1/F/4QtxwwrvquNAFwQTZ/DX4N0vBkqxbiOPD25X3dbhPQ5t8XZnV166CYsTtyzi/zAw35SPLyQ5aOwh1m88c/7WoWGjqeQ6rHrTxLBvIGYIhaDFBRzA1hVXbJ7NuSgYwB9joLH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303645; c=relaxed/simple; bh=ibXDE7QfYBh/Y3uVHmqj0Doeaz6ovE/rm9hnql1AQTc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FXVWotTjEAiFjEnO2phHS0IzYzfDQnD3g58VC5MwnAeQoel2ms2u8gG/lOQEhA94XsqXTgblzWIsb6tdEZuSqB1dVCWAqvYjBRg2xm9H1ZrUcki6RLU9xyOZQMoifvlm3pruNDXjc6WaEyEWfpwFB35hlwBIIUKds5RdP3s1ofw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=cAG+3HTd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=h44dsrLp; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="cAG+3HTd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="h44dsrLp" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7v6n2106297 for ; Fri, 17 Jul 2026 15:54:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= QYeFtj5+lSRAHCG4iElDvXo9CD9HgurpDRFCb9pO2Kw=; b=cAG+3HTde39xHBO6 HCG6LoFcOydtjWSFSFHjLFtZ9sMBUmX55Loig1XKymrf05iso5UEVQTO8eHP+LoS fRfM7tB/6+wpkvPw6zM+4pyzew3P//aS5Xq4N0UitoeocK0Yj559NnkOeSwm3pTX j7EKeAxOS7iM8/+IH343KlpvrkYyn+L0/9wT6m5ZdLKPiZjn6/7SIp3uUbhSMD+V RFQgH24BSO89blYrfTO7wa7TqVxbTl33pa3v7cm1rJBLV3cxMZUzUKq7lCUmv0l0 ubtyO3bvHembL3a7V4Jw/upHolryy+V/K5hVCVT20zYGPNPp5HIfJKFPvboYJLhC QFhv/g== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ffhpfhg12-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:01 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c0408254aso38214251cf.0 for ; Fri, 17 Jul 2026 08:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303641; x=1784908441; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=QYeFtj5+lSRAHCG4iElDvXo9CD9HgurpDRFCb9pO2Kw=; b=h44dsrLp+ONA53vmxvttVBjtpx1iv0poJE/D+aEt2SfeMsyhSCjkz74ePT5NvNmvcF 5vAgHir2ZPlKItT9m30BKHWIPZWkzoDQTzee9Ln/iSoubIRt0/JWRqKGjduBkAttVnAm DULz8aktv+yh1D+8O5aMPKVwJhXYHpXJ582IB2SOpLoeiIkMRaKRo6RdRukNBEt+fPLY B0T0kugDeODszMy2d8nuL4f/NCknMIevxpO1OIpq9pG1cs1G4rP8y8bbN6vhy23Y32NS val7WcbXfbhr/EZuPnf9WhtMSwpS1oKocaR38UvRjKTVkCXqx3z6pQMrCOlyaGygX0H5 AnsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303641; x=1784908441; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=QYeFtj5+lSRAHCG4iElDvXo9CD9HgurpDRFCb9pO2Kw=; b=iUYN8tHUwe9prJ3kO5SQ+Q/M0KLqHjTGqkKg4IOuD+d9RDjPvvCWbSvfZggZvIwiLJ zw0XE+3EdJRbnLqbPeXqYCwjh6CZDgJTKzgZmXhHclaL+tNdlsfVyqisZtxF+cnlXJzk cQsjnoIgJMdWo66/BZFMSiqZf70shwpF1jG8wRUaJfPj2RRi3+VP3bMLyfIVC1OIXMiz AMwY20DasbMwoY1rm0kwNKN3kj7Oq2l256Q+tcRyVfApKuVM7nAiamXfO8RKLv6iUYgM 1/FZcIIGTIWGjCcGIajSNE/sa65Fq94dcqzCar+47gGbCw408OTmFZa4X7ouKblZmdx5 aXDQ== X-Forwarded-Encrypted: i=1; AHgh+RrVClMtYr7IqFhoRSvSllBfUW1B2ItgylASMgo+T/pVQU1bapUQ/VgTm33ULkPmxLPRBsforeGpyEE91OI=@vger.kernel.org X-Gm-Message-State: AOJu0YzEZ/fvfqiv6+UNok66eCMXM+vvOSvrVMJtvmI8WQiZecc8NQBC nKC5VR9ZuIfiOYT5Z1d3nqkGvN8k/o2FlC3iIc5Ri3eLY4wgp9p9oMdcxJOJoFYBjAhqPoEbM3D rDEEyDIXAuCIJkwpwzieQD/LBImQJ8IUidqvw3Ss+hvVkKlbizyiF8Kse49OIPrRE6pcNXk4ijd Y= X-Gm-Gg: AfdE7cnjbxIH1b3kHRriS/RcYLEWu0ObaQflrZlvmm6Mg+jrKXqHbor4wCLiM3RGy5t VWQthXu1dg/Ll4YmGXB6FFn9z9HmvCfMbqonWA5E5j5MUOG6uhVfw3TjjPdJRw/a3pAHi87DlDC xzJ/xeObXfbl/CItPh+4FOpvJOq/odnR9tMBQGyBczsl26TQGmtf4tS6yRR1KbPRcgF63dxasrf J+UjL9v7nVSF6lu93kxssQIvLQdR65VnRY314eA+1GjPLeB3S8dXxTCNO1uJvaPRzOJWSLTv5vt 2DBLAXhvGaAjMxFTCSnLq+NR3bNC6xEZxzXDKzFvOJXGSvfMA29bqaSsesGhgQBAORg/QW0HdhK jotSQ8GmPK7XwYO0tX+OqF4NxMrV6Fw== X-Received: by 2002:ac8:5993:0:b0:517:63df:91a5 with SMTP id d75a77b69052e-51fbfaad90amr75648561cf.19.1784303640621; Fri, 17 Jul 2026 08:54:00 -0700 (PDT) X-Received: by 2002:ac8:5993:0:b0:517:63df:91a5 with SMTP id d75a77b69052e-51fbfaad90amr75648351cf.19.1784303640115; Fri, 17 Jul 2026 08:54:00 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.53.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:53:59 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:32 +0200 Subject: [PATCH v6 3/8] crypto: qce - Fix CTR-AES for partial block requests Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-3-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3299; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=0wfULYDcviuc8Q42MEg50uyXBEFkn0s1U0Ju00N6IK8=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAKW2UNv3U6nFiQE9kWWZwPOg5OFCqB9H1H4 cBzMP9CI7SJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQCgAKCRAFnS7L/zaE w+sREACcjpz5KVQ8zguYq9FygEPKgP9grRojVsv224aOD2JCnjYLqrHSuwud7NnoRKPDTZMfeoQ cKk22j+o8dCtLgMy1qq3CWCac+iOzM87yYyHVO1Lf9NSToohTC38lX3vPzJ6oCEBLCMXFa7/EhQ 7qf6oIaqbu2hELSsijr5qj1rIMefDPN7xbnUNBkBn9kccfmEX17eKbR4Yv+Y0Y0vpQB1Ssh4wW3 K6OpBotd4jZjAi2Sq/nogkPJohCgFeqe6vhJ2uf9gL6Fb1Xio5VQK2vof0//teRhxnYDSV3KWhC /3TLW7IIZbkKGlAyDzsmqtFhKfPie6jjBsQkQp0t4qKblQISsbBnxgOah0bgZmsUUF4N5iDolxJ yccUaf/b4WsUDytJLjgU8UdXbPKx8msAuB1L6sT49orf1E3qsX5A5lqAl5qhex8yjAf8JA5BRUk pNpjdkDOYRvOqCyvuWBsyxSVQJy1p6Sb/DcZm7NNOD8fWNtkJayB1ARMb8O2MwKVhddxbvT8gxL ffBs7wZMvkt3HabS6U3DXfHS/OWNwSNZfl4VSVklzS6aEJYwLbTyFb+HC5lHYMp/5bAN8aIbZws G3Nz5o3u16yQFxaALoXhGSW4Eqb40/UW3uR3baHBk0r8E22gO5x0uaPxjm0/9pT37p7WdurggxX pAdgi7OlDS4ugOg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX2urTsVRvuT0S OR1Ex5FJy9BgC0kEkvNGqCgkxk3dXCikX4Xo4MaqqMQWpBpMxlvwPqxtY9hv6Kk62QZdcQ834u+ 98M38I4ETbYfi5BdmkWoBts+cGDd7nw84ozxwH2lX8sKex70I7/TDGtwFlAONz5vzgVVZ+YGYHa brZOrlH9bf+ooMPn0TyEY+T7zfnIu3ZEtXDtCPJBD6TVbDzI4KPyME4gYB8/HxaSbJIQ5hht4YI VUe9eywO9ERKjhVmiAj8vRtttunae/ek7sELPwAsMZuG0hLnEB1Q0yzbvVR2RNHuybLg0eH5YLT CHI9TigA4lUYilGfhjR01nN5WMenT/kGslo99qPJCT74u4GEJxgJheJWmRxFJnMAkxzEZAWZi3j 8mKaEwfxe7T2mcarrwOn9abi5TC+J83RPsxItplRKz52H0F/Kb4n7KRVKM27QYQdPBInU28d1GB 6iJgFHi7ItAHiOW5HLg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX9Q3PRyTNHuwP Cqk9J5F+JEncuB6cy9fw1jLXVoFaisr34Wh7s6QByqME3ifbX9N4Oviyajdg3hFAyCtTnwJCy3m RRwqc1qDlv/lU1zBeoUmWjK7JreYQ+g= X-Authority-Analysis: v=2.4 cv=YeWNIQRf c=1 sm=1 tr=0 ts=6a5a5019 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=Y2NcAOke46LZopEJyX0A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: Jg39HrF_-38eGaB9BydQUCrCrHZZusjQ X-Proofpoint-ORIG-GUID: Jg39HrF_-38eGaB9BydQUCrCrHZZusjQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 From: Kuldeep Singh In CTR mode, the IV acts as the initial counter block. APer NIST SP 800-38A, after a CTR mode operation the next unused counter value is: IV_next =3D IV_in + ceil(cryptlen / AES_BLOCK_SIZE) The skcipher requires req->iv to hold this updated counter on completion, ensuring chained requests produce correct results. Referring to Crypto6.0 documentation, Section 2.2.5 says: "The count value increments automatically once per block of data (in AES, a block is 16 bytes) based on the value in the CRYPTO_ENCR_CNTR_MASK registers." QCE increments internal counter register once per full 16-byte block(for ctr-aes) is processed. In case of partial request length, the hardware uses the current counter to generate keystreams but does not increment the counter register afterwards. So the counter value written in CRYPTO_ENCR_CNTRn_IVn later once read by software is one less than the expected value. Crypto selftest framework capture this scenario with test vector 4 comprising of a 499-byte payload (31 full blocks + 3 partial bytes). Error: [ 5.606169] alg: skcipher: ctr-aes-qce encryption test failed (wrong out= put IV) on test vector 4, cfg=3D"in-place (one sglist)" [ 5.606176] 00000000: e7 82 1d b8 53 11 ac 47 e2 7d 18 d6 71 0c a7 61 [ 5.606192] alg: self-tests for ctr(aes) using ctr-aes-qce failed (rc=3D= -22) Expected iv_out: 0x62 (iv_in + 32) Obtained iv_out: 0x61 (iv_in + 31, partial block not counted) To fix this, just increase the counter value for partial block requests by 1 and for the full block size requests, don't take any action as expected value is already returned by the hardware. Cc: stable@vger.kernel.org Fixes: 3e806a12d10a ("crypto: qce - update the skcipher IV") Signed-off-by: Kuldeep Singh Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/skcipher.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c index e1f69057607fac36e8b4bdb5dd9e62a2aabe5f50..35ddbe03cfcd75db7599a5754e4= ff978f3528105 100644 --- a/drivers/crypto/qce/skcipher.c +++ b/drivers/crypto/qce/skcipher.c @@ -33,6 +33,7 @@ static void qce_skcipher_done(void *data) struct qce_device *qce =3D tmpl->qce; struct qce_result_dump *result_buf =3D qce->dma.result_buf; enum dma_data_direction dir_src, dir_dst; + unsigned int blocks; u32 status; int error; bool diff_dst; @@ -56,7 +57,21 @@ static void qce_skcipher_done(void *data) if (error < 0) dev_dbg(qce->dev, "skcipher operation error (%x)\n", status); =20 - memcpy(rctx->iv, result_buf->encr_cntr_iv, rctx->ivsize); + if (IS_CTR(rctx->flags)) { + /* + * QCE hardware does not increment the counter for a partial + * final block. Increment it in software so that iv_out + * reflects the correct next counter value expected by the CTR + * mode. + */ + blocks =3D DIV_ROUND_UP(rctx->cryptlen, AES_BLOCK_SIZE); + + while (blocks--) + crypto_inc(rctx->iv, rctx->ivsize); + } else { + memcpy(rctx->iv, result_buf->encr_cntr_iv, rctx->ivsize); + } + qce->async_req_done(tmpl->qce, error); } =20 --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3824F372B25 for ; Fri, 17 Jul 2026 15:54:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303645; cv=none; b=t5TuhRa+Jr80idjUHjlbcPLI0cQeKz6ad8qBwBO9DjiRum0BGn/fR7WfeLBNn2N9OVsW10ZTq/aeOufWOTF/nBNgr4IBkwv19ewYCii1NVOXgjbG/x314CEjh2xzGyYLjCQSS/+egMVFvUdG2sutU3jKRmNjNSbSg0B0drrjj6o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303645; c=relaxed/simple; bh=CYY45MSM4ZMotmXQHnMyBcMwgxFxp0g8DkA1Qgi2eCQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IL/7wCOlhx1SgL9ec8RQgwF+pv06Lv3vwcouNG1z4YhoOdU9ADEofyUZtzwdtvmxFYK0ac3Mys2DRpwyst9MezVsRyDOxGOJP7IZscGm1DWRHflgwtAQHc2getWXRIX26reQFOI7htVnI1N/YnlGMk73zfHrRs1S/lRafzM/kSQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HDq6f2j9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=f+JuH08h; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HDq6f2j9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="f+JuH08h" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7rMe2002123 for ; Fri, 17 Jul 2026 15:54:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= dh/jB5jnhJ+W/sIx1gynQvHO09FmmOdVkDRtzuKngL4=; b=HDq6f2j9C3nRp0jV njEegHW1uOTosOgKsxlq+x8KMDIjUiYT1MWFJuF8vsKjKO/jjeYaLb3PRk2KNQ1K aBPlceOCDW8+6B8ah0jxTj0ZWLFIY2VIYGgzYcwWa+ULbqgX7IQ0QRSOHUcBmsWQ R482wJEJ/2Ip6r7qLc1ZnWl+HIa24726aOJAZNmPYU6rCdSfQ3uEZVye1fyLr/ix 4csMLN/msATNiRdpiuYEZPNy5/fzPyPsWKlsgkNnQ6NI44DZSDPP6xad0CNrlXgq HNVyS82QIuQ0/huzMbTwFgzQ/Tbp4UoTWEwnDVrRq1oxCrR8jAF0kFN+El3051yg TACNqQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fff9gt56a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:02 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1a97644aso197318571cf.2 for ; Fri, 17 Jul 2026 08:54:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303642; x=1784908442; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dh/jB5jnhJ+W/sIx1gynQvHO09FmmOdVkDRtzuKngL4=; b=f+JuH08h5uD5M+BC3dlYXYObO+KDIl0Ua6TSqZjj+2jQ4RsPg7kkvjvVrHY/u3StMD H2mXWzpH41xq7YbhG4EoF0Iok9WEqjk1B1G3RRQXewrI7R683bPQH2D7GlKOvHNC9e/M WdXwn7WgX4OqPkx17Vda1WridIoTVMNjhPHG+8QPcImUCIIKKt83x3C6V3yblSe3gV60 3ydTDC5qmpkOIyVCEcdn2pJtmuXmeHt9PGraQVYmipLSv0Jkw/ADYhH8zYfXYvlO5XHZ Kqw18gRK6iEbPTpgKPUoXN46xMaVGgcVMx9NQt+vuHqy1mkZU6j6tePvZ3usYJNjw7Ql Xv2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303642; x=1784908442; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=dh/jB5jnhJ+W/sIx1gynQvHO09FmmOdVkDRtzuKngL4=; b=gaO7uEh/6xrTql8cTEliyZAySxRwcY3SptzMJF+CHNsuFTpMzX0okYuG2GtD635vxn gZCfnFjO8K5CoSQGGQGQg2l1Tpa2r1wx/wbX6NvXsO5pUKtoCilopU19AkFZmxtthC6O ms0k1GA/D4xTVfhcZ57Jc9tvqhyx4f1vxmCicCRQ30qdDhLntZwb00SBG87wFvPDWtdp D7NH3q76o96EHixzuzoUpeApVDosfLetolpAI+cGacT35WIze3JJlnF6rynDk7Wm2nc3 V+jzmQc45mJ3ot1PEYp762NJhkxfR41SAHLQ4B/MmXYxmVObKX+EFjJE1Rpmpr4nzdOK 8W8A== X-Forwarded-Encrypted: i=1; AHgh+Rq/GWJ2HOcnw3Efs5Ct4/UWDohU7kaFgSy1T1fpvt5nuspRTf+4MvSsOfnaP0mqJzgvCkoD5CyI38zTlfo=@vger.kernel.org X-Gm-Message-State: AOJu0YxD2iCHugW72aqkARejU1Pc6l5ldgLfaSpwuUCDEYl9Z94OrUQN aYdw1wFGvBhBeQnRiMgubcSODsKos+gPGEcZ7VHObJ/rNGseDUXmf4S1Py0ioBjxvPheVtVs1fZ TXsVc3qOlhKAXg2ZxZUWKwDc/3I2JYBBvceazfjprE1m3KiTg4OUDHgVggG97CfFRk/o= X-Gm-Gg: AfdE7cmwGFW9ES/KtcO0ridoLYKNECwCsFZ0ifROvc1lIIAWRRrvnMoU6dphrDfND1P Z6knaKCyGAhWeuPzgi4m+I5JmrWTevGMGp3ZfgOxAlI2Jg5D5Kk2eg3z7gnAPP0N3HPR168T5D5 oL8TG3TZYkqeLFA1XtvArDU7tgISzQv/pY6OjPBIO8wZHQ132Uwb1oN6ABELX2DzJFOLFLAfgra 5j4xwEvA5v1dWJG+3M4rhz9WJ6eb410FOA5ReInyaleSAVERtex+wR6TzDdlJlwiwi9EYS27TuY o/r0wN50Slv+XPBJG4mBaQ/pocfjghwYXXqP2DyPotUiFWAK9oDS8vHaK3Z6UFWfjxmb28WovpM XmRLC+ezP7KKpgA0SWFHUvsAxPou/2g== X-Received: by 2002:a05:622a:3ce:b0:51c:43d8:860b with SMTP id d75a77b69052e-5213e28f1aamr29206641cf.54.1784303642434; Fri, 17 Jul 2026 08:54:02 -0700 (PDT) X-Received: by 2002:a05:622a:3ce:b0:51c:43d8:860b with SMTP id d75a77b69052e-5213e28f1aamr29206291cf.54.1784303641924; Fri, 17 Jul 2026 08:54:01 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.54.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:54:01 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:33 +0200 Subject: [PATCH v6 4/8] crypto: qce - Use a fallback for AES-CTR with a partial final block Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-4-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1764; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=CYY45MSM4ZMotmXQHnMyBcMwgxFxp0g8DkA1Qgi2eCQ=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlALZQenLLr/l6GpW57S5CIGl++82suMAmuZ5 GMNqFZatSOJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQCwAKCRAFnS7L/zaE w97xEACEMRpS5rM0mvQKz1+2NoVeFw5NLYBoKPeuEXn9B3lucPezNKgNWOP8Wsad2oGtXDppzDU 21wvJen4WBZTR5aejnWubWL4nGieXdHwFSjuYJ67ADi2iopB+tYoB+QRs1z6Ko8+czlgEYmcQjv AU342zPHXYGzRRscvp2It3Tyei4lMu/RF0D3v1fDHGpAqLnue10cKZiFoCNPt9pxgCeE2IOTjZ0 2UR8sqNa64Q3A0qUUtPhTfFcOXDTqtfj2HryFOPNrTL3306VARPerJRcMZF4ZumVJNixH2V7Ln/ FL0bcEWQPhOwn5xos/QGE19AF44gtl3v2BYIOpNOjn+Fz4TIm84R0nKzt9hWOeq2WV+XLZTm7Bo nbCJRngBj+Xlq0ZHITDJXpdBgpSXlcqd825Kex4fuLfRHhWPNbNSt+oqpS7YMAzeaP3bcLT6vYM U+a6Y+bBAUJWLBQW/1FF6u4g8Fp8DGs5lXkiB4GVb9N3QR/DLvB3Et9OomEONhcIlV2zZ/mpGwi x+ap+UHiQhdvBzj4KxbzQabNNGL1UG9QD71O3uZPqo62rM0wTV19Wvmr+mG304M82ZQng0IFTMo CzwgXieJMhqLzi0TznKtdPd9sU+yii5cDn7wWtGvrBYNKSJKP+xxmazcL+45kMgjC+BACL3YYUS KV2y2ef3OlpRqOQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX4pBLHqDn/aSo iuwNfO+Q4iwILhGf6MT8WUxrCYGLxQAtSUBe55HLl4pUKkcmwppCUobNUkWNdURrlL0iXEoYIIJ t1hkgkhEV7padkGF82ZNo56dX7q4D+o= X-Proofpoint-ORIG-GUID: hYrBZRG71j84yioePej79e-NVIln2V-h X-Proofpoint-GUID: hYrBZRG71j84yioePej79e-NVIln2V-h X-Authority-Analysis: v=2.4 cv=TaumcxQh c=1 sm=1 tr=0 ts=6a5a501a cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=vUpbTSJP45I4i0_vGVUA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX4xP6q3TuBq5U Ty9fGTGIolPShBNdlkaxZ3mv0QIhay1fTFu0rcBhtkynejRMQT1yvW8IwaDGzI+mycMGgPp98rw V+PrITTBh69HN8/hRUFI+E9EL8WSVBuoOG8l4K6EEIYNiC0MLwKu7wnFJCm36gORRxNTwx6olK3 dYImmHJft2muDvkTYOv0ZFUbL93MCGuwHMocoeCthwYJrxTeNUpWAbEeyN17nuObrfIEYdkt+U1 NGQPuAF9xQ12fDQ3+agYP6I3FM8zAmcwcoLK0b/5Ybg1jbT3cWVs3oiwBsbmn0Smq1yLRnR+imc 15Jk98KlUY8BbONYOI/LxIoqLmXog5r2bVM0ll0cI/O3bI0Av0Mx7HE2YilXN6YuYhJ7ZsMb2sZ PGpdrCQfHq0Y+dbw1W2ljPxOUaLIQY+WGV8KjB6cWN938TV1Dtlenv14T0Wp8vgzkyUtusHjVWf ehrlRqbnJepE7E5DOEQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 ctr(aes) is registered with a block size of 1, so the crypto API hands the driver requests whose length is not a multiple of the AES block size. The crypto engine, however, stalls waiting for a full block of input in that case, leaving the operation incomplete and failing the request (and the crypto self-tests) with a hardware operation error. Route AES-CTR requests with a partial final block to the software fallback, which already handles the other cases the engine cannot. Cc: stable@vger.kernel.org Fixes: bb5c863b3d3c ("crypto: qce - fix ctr-aes-qce block, chunk sizes") Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/skcipher.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c index 35ddbe03cfcd75db7599a5754e4ff978f3528105..54ff013e24317cd4d7a0dcde88c= ef8268db784c9 100644 --- a/drivers/crypto/qce/skcipher.c +++ b/drivers/crypto/qce/skcipher.c @@ -260,9 +260,12 @@ static int qce_skcipher_crypt(struct skcipher_request = *req, int encrypt) * AES-XTS request with len > QCE_SECTOR_SIZE and * is not a multiple of it.(Revisit this condition to check if it is * needed in all versions of CE) + * AES-CTR with a partial final block (the CE stalls waiting for a full + * block of input). */ if (IS_AES(rctx->flags) && ((keylen !=3D AES_KEYSIZE_128 && keylen !=3D AES_KEYSIZE_256) || + (IS_CTR(rctx->flags) && !IS_ALIGNED(req->cryptlen, AES_BLOCK_SIZE)) || (IS_XTS(rctx->flags) && ((req->cryptlen <=3D aes_sw_max_len) || (req->cryptlen > QCE_SECTOR_SIZE && req->cryptlen % QCE_SECTOR_SIZE))))) { --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C66436C9D9 for ; Fri, 17 Jul 2026 15:54:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303648; cv=none; b=jv3Su31xcrQyZ8nJX7BTMHt4Sha2igsDUGsb+uzJs8TdfT7i+f1fCmAUVbWPccj1bq0Drd4Q7Wg2AjU5gaJcGBJ+MclfwSCm+dlNOZca/6d8dNu9w/rP/p9j6O/OglWaNOe1hK9ADjTvtjmg0eJnhrwJlXLiEtQFF76j/EtiYmE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303648; c=relaxed/simple; bh=BBHp42+omknys/iPA5EACb9kJI3V54wM6S0aFwyVF5Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hh9mmHHllwUcMEauGFkE2lju9wfzQqQzVnJ7Wn56D/gPCFMN5GzremBDBZyFpcsXzmd7KlMTq7UbtFaQPJjD32Eyw+A1e2BkEs7j0ClWEf+9kt5ejjA54M/AyOjAnG0fPPoyt1NPt6KDokqIRUeaeJveroZRMngva/HUrN/u4y8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dsGkRy6o; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Cu9suT9Z; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dsGkRy6o"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Cu9suT9Z" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE8D2F2106629 for ; Fri, 17 Jul 2026 15:54:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= t6HU6VgFlAEyD60GVbuKkJb4521AyTSlWxXiDy7nMI8=; b=dsGkRy6ola/Tsy4Q eLdyWTHpWxM3p+sIlpl7/o8CiGZ7O7bTiE/3amw8a4UsC6TQYHn6MyFPKlscEwBl vzL8CSg/RshLWokjndeuKk1lawkEdjLyI+RQUCSUiitkBWpwUBMsTRhqmTCh8o8f /bTntjmr6kXCRKaBntHqvwlOaUuiYwdsnG3sQLpwupiNBI5EQ6X+aO0L9CER0GI1 /5MUTG2e/FemeIhEGCNBqnIYrK//ANOdJXgiIxDRG0IB5BLBTThTPaFRNqmHvQu9 qd54zO7YvVBufA8Ggsj+PsgB6gDGuulQrq5j1HY1HtgMxyb/wYC2wKaVrEH5gH1M U1oiSg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ffhpfhg1a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:05 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51a8db414c7so122207161cf.0 for ; Fri, 17 Jul 2026 08:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303644; x=1784908444; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=t6HU6VgFlAEyD60GVbuKkJb4521AyTSlWxXiDy7nMI8=; b=Cu9suT9Z/5lag83YTwuV9eBy8O/yX5tms9PAd2w7EYbpqlVeOfnqCFAMVJIA/RjNFE GxuaaVWYwYsa8qKaN7+7xEYtEUbs4AKi4vx/tp1W2m3+vsnqk5NZGR1GZQXlh0mcbSLZ NeeXipzbDho4/Slwk3aui5udYFt1YtFyiJmdmPmkFcCD1zhVI/xVxOELLrdrgx3qHCCW rmdlv32wlmHApHPZEwV9w5DoGaXVw6/zQxxNWxrOD4xxBjjmrjv/UOn/GoUitg+7NhV7 Y5bzwmyecEiefFHqf7Sd0XrY+DmchyBSur9uclw0ahoU++bjWV9RImKgXgnfAO8w1OI/ hYgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303644; x=1784908444; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=t6HU6VgFlAEyD60GVbuKkJb4521AyTSlWxXiDy7nMI8=; b=I3Yu0UTI/ymu9Blvovlp+ipup86yaH/W6EMp2qwpT/XBPeNCG7nGTILBLEUQfQlPlP 2HhOQUghDT1XydGw7D+bHMabFztMM/JAvr513vMdESUBfQkLT1yYEL4QepGHgFKgKpeF sMFZ7jU2RUv/WIY4sGbh/CE7yJRuzBLpUAwzzaViACrqHcLn5fFyH7zAF7/M81352MK8 DBTefdt20v5Il4NTM5ExFIx6yfHLaGFygxFMkgqhMdpUGmuZ0t/VA8Y+KY4NedxDPGOF JAABMA/nwhRup8mo+b/ObCF17b+ke4GbK4Nck9kUfI0jXvoLml1Ozxtp3EvuGdZjgb08 hKHw== X-Forwarded-Encrypted: i=1; AHgh+Ro2n2N8usnaptYpfmb2u1iQPx6O7aYxR5lQ8KkN7UMeMPnpLPSkZJlKI0LQPsnYMuxTCLZN8WdBSfL7XmA=@vger.kernel.org X-Gm-Message-State: AOJu0YxKd6B2Ggh1oRVbIqLkYZg0RhmYsqFjhN4tV3a5ZSmdkuxiAiEg FSzoILhi4xHpi4A72bSPS0Scc38e9gHNnuvcPUHwgUY5sFBlFOq44EdxmoIwD1rW+7j4zZ4VGUP AqQGus4D09tEtzNJimnVlIb+Gqd8JDhGNybjjiJ0/cfgPen+2hqX93vV6MQRmTHGgT58= X-Gm-Gg: AfdE7cnJvGma1DoQUTQYha0M+Vno8pSMcJtCOspL6PxpWXDCDegkutrhWvOyCm/khD9 Cs/aagx6mcnoGPhdtLC1hnUxKCNM397VXpRqXXgmUKedshnwmbE8OHFSqUcwaLLGC3DADxkLVHC 8o77/p4AztjeZNn4kbBi5QAbSN0M7QoXwFlBXwJPSgB47e37fdCcMs5sx6yVZg5/ACUYwxf/92K w3o23ejB2tqAk2HHn+BkWumg3kaAZsiAzLcQubkxytYqfb4DlTeVsAhZVOzHI/Lul58YZOFjw9L 8RMTiIzoro8/ZnCsiRLn/jGu/VY3zcGlcmg41cxefVY2Bli5aUFqf3EXdUKCeE9dEW5T6Vx59Bn 5JWbnlaUz8OvmTA+CiKbPumK4gqNRrA== X-Received: by 2002:a05:622a:4012:b0:51f:13a1:807b with SMTP id d75a77b69052e-5213f966098mr31155661cf.88.1784303644416; Fri, 17 Jul 2026 08:54:04 -0700 (PDT) X-Received: by 2002:a05:622a:4012:b0:51f:13a1:807b with SMTP id d75a77b69052e-5213f966098mr31155381cf.88.1784303643916; Fri, 17 Jul 2026 08:54:03 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.54.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:54:02 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:34 +0200 Subject: [PATCH v6 5/8] crypto: qce - Use fallback for fragmented skcipher payloads Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-5-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2078; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=BBHp42+omknys/iPA5EACb9kJI3V54wM6S0aFwyVF5Y=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAMC1qipsrdpvkDTnEt3LtXQk6P8tCLDjNUq CZYsxfrAdqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQDAAKCRAFnS7L/zaE w0GVD/9VCHqi53NFCsozgiEzSCqXRnXY7Q5QbyuEPGrQiWdHwteOGG9viZpzSwtiHQUgKv8QcFh Gz+TeR+pYaDGQ5tUm0ErR0UY8K3yWxGEQUkpITHRcd14PdJOHphonJ0vkHFP1karcbhSu9Geuh7 xsZZCxpCH3FUn4jy745QEECI7FFYEvB7Xkw3WJujIBYRCFFi0062OAqzhRSoRxjpk3iEgRX5ZTS mTwv/7ko6S3gQ4rtTuQOlAlA4NRghSWbNDVkARoAkw36YqEw3HMMq/FUpqz6dIH6yS7DsfhADmh DheiadLNqGyjFZJPwKvsRA4UUoKwiRWn7rYIG3svoFn+oXx+ZhZv7xgYi9vh2324Ctn+6rv3P5O zQ0Xo74N3ay6vldqyBWiMMo771ywbgPodXLhRXE3RGYDfm+1WKH2TSFrTKxJzRUaOXnlCwrKeKp LRtQtT3sQa6MgOkgceBfiomucJM41Blkm2e/sv/v1EhrGGFuoMwQZjfc7j6UbjxUlJFwis5AvJ6 YUTPmoCly4bS+QyI8OsrbAvTnCWkXNNNF0Qjk1xDG8zxPZxIOPZEY+e8jQiPvupjrYSrkhgtc3e V4o6S0h6KIrfTEmK1stXwFZXL8s3UIUI9jhx8nzID8hvhWmBrW8JFFvHcwIvdbClkhthMHMsyZA pioAgzz5dCZXzzQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX/eep1WL9Z7Ai wOT2RdfuK9DP2a+QfgqynGv9w+FMl+2yZ3m4F1B/GlERxlnN8ltIAMbzw9ZwOFJzf44BS3eQ/8D yWnD5F2xlNetGDbuK0qnB3uF9iLM3M/K7+bmKzDZ7vJb16AtxyuDpgm2X5m3oH2RCZWeD2cRY8h dttjca9IiJjCFJ9uKx6eTxx37Ep/klFuNrqhD3aEae74nJVVYFuYmWFxeA1aRHRCa30sI6SM7a6 iGPF68A2pR1eLbDqhcfCEvRbHq44kYese0xRQaE8iUbtGImcgPn8LUdLAbTAEJM6cC7mCno1mB5 9tQE+pTx/cc6B6cPIqoQ0vfXrB84phJ93Ywh4C4HSRnfsPYtIHk8Vc1jbk79F/AjMoZ6faTSvxL 0ZAKWY7X/pfzFKGrSDizlIeAphU31UaKX1gCqwpHgxsN40ih3a2rgseBNE7sx4jAFl+nG4ziMqd PcN144TmBy2bsHeL0xQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX9HB6u9IpjZDp CunV6CzBlYwocxEnYzxS9vcTatXmC50Z4a+iDlbGpzQe2XFQbVpf95VOie87Zde+jeKniEVEMn/ Zkru/OhuaDj3ZjVRqpyV2f+xnxzgHEA= X-Authority-Analysis: v=2.4 cv=YeWNIQRf c=1 sm=1 tr=0 ts=6a5a501d cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=2ArJjka39wvl4ErYtigA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: jtGikHAVUur2Fcpue8z5Fd7-B2U29ESp X-Proofpoint-ORIG-GUID: jtGikHAVUur2Fcpue8z5Fd7-B2U29ESp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 The crypto engine reliably processes AES requests only when the payload is a single contiguous buffer. A payload split across multiple scatterlist entries makes the engine stall waiting for input, failing the request with a hardware operation error. This was uncovered by the crypto self-tests, which feed the algorithms randomly fragmented buffers. Detect a payload that spans more than one scatterlist entry, in either the source or the destination, and route the request to the software fallback. Cc: stable@vger.kernel.org Fixes: 25b71d61d631 ("crypto: qce - Improve the conditions for requesting A= ES fallback cipher") Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/skcipher.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c index 54ff013e24317cd4d7a0dcde88cef8268db784c9..4779218d4f33a07331c510abf0d= 6d23e7e70d102 100644 --- a/drivers/crypto/qce/skcipher.c +++ b/drivers/crypto/qce/skcipher.c @@ -262,13 +262,17 @@ static int qce_skcipher_crypt(struct skcipher_request= *req, int encrypt) * needed in all versions of CE) * AES-CTR with a partial final block (the CE stalls waiting for a full * block of input). + * A payload fragmented across more than one scatterlist entry (the CE + * stalls waiting for input in that case too). */ if (IS_AES(rctx->flags) && ((keylen !=3D AES_KEYSIZE_128 && keylen !=3D AES_KEYSIZE_256) || (IS_CTR(rctx->flags) && !IS_ALIGNED(req->cryptlen, AES_BLOCK_SIZE)) || (IS_XTS(rctx->flags) && ((req->cryptlen <=3D aes_sw_max_len) || (req->cryptlen > QCE_SECTOR_SIZE && - req->cryptlen % QCE_SECTOR_SIZE))))) { + req->cryptlen % QCE_SECTOR_SIZE))) || + sg_nents_for_len(req->src, req->cryptlen) > 1 || + sg_nents_for_len(req->dst, req->cryptlen) > 1)) { skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); skcipher_request_set_callback(&rctx->fallback_req, req->base.flags, --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC8C842F70B for ; Fri, 17 Jul 2026 15:54:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303650; cv=none; b=ddt8eIpeeLNWI7dz8wNHV8ohHdUW4TrxdGx4E1s8xgW4zQYWlCYydpc9ZuxMTtEbAn1CQUmveeuYS5dKOX96TkA56Vwv0Dh1HhqiBaN6kDnZf64pJA2aeFfmfyJ7K9BD0HO/LiFz+DPXgJPHOWv6cM1a1tRRCzCS6RV3BWItMLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303650; c=relaxed/simple; bh=kG6GqPZEp+/IdHwaQrSkJh60hQWBLC9WceMGchytKzc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=njRTK1udslOpFNb/Bw0pfR1HPmaLrsgYS+ZKiQF3K65oSej7xXNeEfLk+Atj1F0F49HDgXbD5gt5bBcZGN5XyD+9IJkpOys2loq8HIVleHP7OIcdLdNu2xZa5Jsi5C0IPNB3u/IqWDsxsdpxvP10llJ5DGDQDUZ4SZnzr+W7nKc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=E2UQt0Fq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Z5e3KwUe; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="E2UQt0Fq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Z5e3KwUe" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7qs91675752 for ; Fri, 17 Jul 2026 15:54:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BqAU3pbCskzec+/3Vw5PoL3sZolu37KpVmkDZNMLwlY=; b=E2UQt0FqU/dQl+3D mtlw5N1pMJ6qXmP9V24GqtMKZ7qm2mGkT0j6+u4hbHyas+SbY6niNDj+BMEVA/zJ lOz5yJTcFnOgORGzdZgtPfbZ1K0o8UVNc35r0DcNEbfA07WcSBvuE8rPlfAUrB1d yvHHq1WO2uONpp4yUyQyAogcGgw4TOHHOE0N8RHatOQeqtz4RxIE8mWgo79WrBBH v3XXYILHDqmkwLvKuxo02QNWuAgzNUY389/r8HJS1n0chMAS7ZpR0CdqnUKoalDZ X1i7Na/hb/n43g6m7ZiQcT76ZvRqaSh++Q4zft7vOIJiaEsBTfEPiIsPRoKpAjwx 2y5/Yw== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ffj78sbcr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:07 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c1d30035dso98802231cf.2 for ; Fri, 17 Jul 2026 08:54:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303647; x=1784908447; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BqAU3pbCskzec+/3Vw5PoL3sZolu37KpVmkDZNMLwlY=; b=Z5e3KwUe/nCkETaxxpmkArDXw91N27DzXLEvTLNqj4PPATUgsghjB3Ij4ZjX1LFrfX uKCzvStGS0HOJoetGStvBZdKNcnA5lAVqw5Ioe2xMUCIBMfc/E95iCKgeuwQsQRQ06w9 4iaSTEhPOqsIlHjuwY24kBSfU0eTbr6hx4nyu3zmPXwd44OYemu8x6b5Lb5csL5+wm7h WN54TWuoKVIb3YBajJ1soy0RTQP+pIPVDsOgTMm11ammNwvz2ddtMzsoauclJ2Dsk3gz 1bFvuwY+2tIikDoh/n4b4mItkin9jObZHq3Ov+ySpfFZ2UTwL7bTq+XEzfV2l5g2MK4H EhFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303647; x=1784908447; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BqAU3pbCskzec+/3Vw5PoL3sZolu37KpVmkDZNMLwlY=; b=Pyo5OfpX3fw5lky0OZ6nSDucgWOevhkurfBG7BSQjIMlu7hfvtDGLd510G5+pN7Vqf Cx5PYNHs4ImOCq2lg0LU5rkUUEyxszmCQnq4JlE2l+gn7MZLr2ywiOoI5XtGg1Xt1lHP wWCAwV8YC/aOFKrQjPsdLI5BBAg3ek+z0TY/LtQlnl8fvwmHOXKP75ZcnkIxmqrnmvBm CrKCO8vnsayiWZ/PhJdxLg3Lhhi4tV/wpVxJ/QHd5+pSJGBtavtIceBJ3yLYbw6pdITn TuIwYecVYhL5JIwf7IaR5P2jIsClDKmNisZeJe0iVGaYLhtItP/4GM2XZFtKf/AjWWDP 86EQ== X-Forwarded-Encrypted: i=1; AHgh+RrI9dlvg42pguhKKaEfmswu03mM1bBvFcnyFIYjxN2nwZYRfNE6/JqBamlt+XXFfuseECay5HjRPcXoIvY=@vger.kernel.org X-Gm-Message-State: AOJu0YycP5Pb4a6AhhpIYj6v85/8+gYFurOU9qOqu0+ZhvXq0ODadlQq UmO5ob+Vp/fhUeGvm37jIhLbZqSIA/Cz9jWpbQ71voIxF1Ttzl3z9NHKBQuvc5lOiG/v6eEihq3 vFvnTgyjrLKvBBpL2nMnXepTCRHWX6puwG94sjiqrLL/bFqu6Oq7lSMJ8agu//Z4AzLs= X-Gm-Gg: AfdE7cm0cVAXBCxs/1mq3MGn7RbuBiySGl/c2i4EC08eNesH/wmHldDC2nUd2Vr0Sm4 nSix9kmKDTj01MugYdks1Yg+u5/tW0x4hw1oYcKr+k3FHaxeIkhfM3WHKKjidfF/JXhHBly30ma jsumVNtlPHzvJ3rDOIgAzCgkq14OVVAaMbkfME2CkEzQtNsJBwx/Ff9ghrbn/T730Cb8OMAvzUx HJ15nX3Y00ADe2XdosKo0CoWjSQ7wQBJLPtQJCTphUp5IeVoP9Vtzit92H9ydAN1g/W40xtz5Ka bhWJcMs5VNdplOgydarrOQ3M7ALpokdxK4OWdafvDeipFivD5aiO4gvOmIZTsKiitDmQC0Lt0IR 6gKSxn3nQnw2tXNI44YOeb8gjW7AvrQ== X-Received: by 2002:ac8:59d4:0:b0:51b:ff45:bc82 with SMTP id d75a77b69052e-5213daa1d49mr29753621cf.54.1784303646756; Fri, 17 Jul 2026 08:54:06 -0700 (PDT) X-Received: by 2002:ac8:59d4:0:b0:51b:ff45:bc82 with SMTP id d75a77b69052e-5213daa1d49mr29753311cf.54.1784303646252; Fri, 17 Jul 2026 08:54:06 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.54.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:54:05 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:35 +0200 Subject: [PATCH v6 6/8] crypto: qce - Fix xts-aes-qce for weak keys Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-6-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4152; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=aSgSggZNKFSkUSCkcp8Nh3YxGdWoKOMXm3+FN8YtSM8=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlANcIan0mYcl0bQ36zNm+24DZ6d1E7cMzGcL ZDK/XMAHHGJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQDQAKCRAFnS7L/zaE w2lqEACVEKuAW9MOhdKzseFGSfB4mdWmYLoKC43REEe5ZxmHmHDJwCHxbqMzCMGFsF+WrYYstjw syeUn2+jyIPlp7r7KAZ0/afkO+nj7If/KqiwpCivbphzw2HNg9Xk4oDtUFs9CgjC2wssHK9ql0F 5KLVjqe52fEvGm8u0jzo5KhmEK5xbVDzIdjpDDpgNNU4Vhk+g5rQLSNt52g7g895PMLvPxaXW8X DaC6P7UhJ20arNUBKNDgSfJOpVpHVEfBSU3T7Z96Y8NRy5Pvc+Zuajzk7RrMM8ed4eDcRpz6IYH HKh7f2kvAi00YRE+qB6924GA8GbMyWBMqD9B34thzYqVJh+qW05bd2tEhVHJEEYiyEWjpIQS/4G WYmr4mjGcLv+g2y7GXWd3i2nJnXhH7R6fKSfXzO6ygrM0E7/aRVI5JUFVr5nBiNY7RgLifxKSdm BDrwE3c6GPgh62UiwSUpvkUPIhGDcNXizuUVlVbUrpnGakA0nfHphzN7K7Yrjle8tQUcz4H4hhj iM8EtdkiKOHbspetzwiodpDagLPPjuuE7Iyvrd26Lf8kAumuyfTcelBmHdZeRNh0n8mHevw5z7X 0aWXLaaDECOgg5F3QU4f2CJk4EhBaxHhYLDfPV8jJtzMFzvAHUiMTNd6eqVpREfFLVnQLdkmltn QIKTQwmlTiu0ycw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXxzkMKOUTD8Cb +iFm/pdpayJmFSgPUoPmylRiX93Sy7/Zvmzo40hV+1eOGRusewxV2aBb7lQyU6TcjpGXjAQWJec JR82YVkliCPD7QTXm0W9aIHQ+9IYzBM0DAzoqL8IOTJvPy9ydQQaR5GdLSVNU3J3/tQfOhQnGL3 wCcqFw6UpUhzFq0ljI5ImjoHZjBsWUHynxad/ZifXMdCwIF+ymH+2ViechETziK+GYO20wmV0k+ 2qu4V2+PIT6xd8pTaHFwkm1tfCceT6YPrt0NsFxSSWgQA3jok0Y5h98Emg2GbQEDMzIPggmfBu5 arxZzEupNpbnkRx4Pqc+q6jEWVeo4Q9S+srlMYrRhFI8CSiHAtb+3YrlrB97XbmbD4IigFcAiiu yz2gmtR2Tp5KaNOg4gEdmz2s9n4sDGSVCQ2u2oQIn0x1JtxlMdd/XI/Cah/18Cm5AbuMb2g8vnN /jPnXhcUKs4ZpydlxEQ== X-Proofpoint-ORIG-GUID: iawHYBNiuMqzk3-W-nok9Y-EOzB1FP2Z X-Authority-Analysis: v=2.4 cv=U9Ciy+ru c=1 sm=1 tr=0 ts=6a5a501f cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=tpKvEUOkdOp8HkJiz7sA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: iawHYBNiuMqzk3-W-nok9Y-EOzB1FP2Z X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXwuGkvRoWkuDj lrttQ6DIUIs3C+nr67CP8eCnuuAe0fntbLuk3UYCVfH+wTxoC1DiS94gH5CZ3Q0+8zN4xEIAU8x JeHpnU98MEGdrH7uuyhZ5w5Mhfy7Sw4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 suspectscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 From: Kuldeep Singh The QCE hardware does not support AES XTS mode when key1 and key2 are equal. The driver was handling this by unconditionally rejecting the keys with -ENOKEY(-126), regardless of whether FIPS mode is active or the FORBID_WEAK_KEYS flag is set. [ 5.599170] alg: skcipher: xts-aes-qce setkey failed on test vector 0; e= xpected_error=3D0, actual_error=3D-126, flags=3D0x1 [ 5.599184] alg: self-tests for xts(aes) using xts-aes-qce failed (rc=3D= -126) In general for weak keys, - If FIPS mode is active or FORBID_WEAK_KEYS is set: return -EINVAL. - In non-FIPS mode, Accept the key and encrypt successfully. Since QCE was returning -ENOKEY for non-FIPS mode whereas the expectation is to encrypt content and return success, the selftest saw a mismatch and failed. There are two problems in QCE behavior: * -ENOKEY is returned instead of -EINVAL for the FIPS/weak-key rejection case. * key1 =3D=3D key2 is rejected even in non-FIPS mode Fix xts-aes-qce behavior by using generic helper xts_verify_key() to reject keys early with -EINVAL for FIPS mode active(or FORBID_WEAK_KEYS set). For non-FIPS mode, since QCE hardware cannot accept the keys, use software fallback mechanism to encrypt the data. Cc: stable@vger.kernel.org Fixes: f0d078dd6c49 ("crypto: qce - Return unsupported if key1 and key 2 ar= e same for AES XTS algorithm") Signed-off-by: Kuldeep Singh Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/cipher.h | 1 + drivers/crypto/qce/skcipher.c | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/crypto/qce/cipher.h b/drivers/crypto/qce/cipher.h index 850f257d00f3aca0397adc1f703aea690c754d60..daea07551118d444d2f749588bd= fe2ae2c6c553f 100644 --- a/drivers/crypto/qce/cipher.h +++ b/drivers/crypto/qce/cipher.h @@ -14,6 +14,7 @@ struct qce_cipher_ctx { u8 enc_key[QCE_MAX_KEY_SIZE]; unsigned int enc_keylen; + bool use_fallback; struct crypto_skcipher *fallback; }; =20 diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c index 4779218d4f33a07331c510abf0d6d23e7e70d102..3df583b1a56ec371e556fd00e79= 30d9fc4447ce0 100644 --- a/drivers/crypto/qce/skcipher.c +++ b/drivers/crypto/qce/skcipher.c @@ -12,6 +12,7 @@ #include #include #include +#include =20 #include "cipher.h" =20 @@ -194,14 +195,17 @@ static int qce_skcipher_setkey(struct crypto_skcipher= *ablk, const u8 *key, if (!key || !keylen) return -EINVAL; =20 - /* - * AES XTS key1 =3D key2 not supported by crypto engine. - * Revisit to request a fallback cipher in this case. - */ if (IS_XTS(flags)) { + ret =3D xts_verify_key(ablk, key, keylen); + if (ret) + return ret; __keylen =3D keylen >> 1; - if (!memcmp(key, key + __keylen, __keylen)) - return -ENOKEY; + /* + * QCE does not support key1 =3D=3D key2 for XTS. + * Use fallback cipher in this case. + */ + ctx->use_fallback =3D !crypto_memneq(key, key + __keylen, + __keylen); } else { __keylen =3D keylen; } @@ -262,6 +266,7 @@ static int qce_skcipher_crypt(struct skcipher_request *= req, int encrypt) * needed in all versions of CE) * AES-CTR with a partial final block (the CE stalls waiting for a full * block of input). + * AES-XTS with key1 =3D=3D key2 (not supported by the CE). * A payload fragmented across more than one scatterlist entry (the CE * stalls waiting for input in that case too). */ @@ -271,6 +276,7 @@ static int qce_skcipher_crypt(struct skcipher_request *= req, int encrypt) (IS_XTS(rctx->flags) && ((req->cryptlen <=3D aes_sw_max_len) || (req->cryptlen > QCE_SECTOR_SIZE && req->cryptlen % QCE_SECTOR_SIZE))) || + (IS_XTS(rctx->flags) && ctx->use_fallback) || sg_nents_for_len(req->src, req->cryptlen) > 1 || sg_nents_for_len(req->dst, req->cryptlen) > 1)) { skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 634E842FCAF for ; Fri, 17 Jul 2026 15:54:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303651; cv=none; b=UDWAM+9MGt9Q85G7egSMk3JCT7pjmlj9ZljWF3xBbItb13uwfElLfh8zprT0e7xDZIM+nCni9oTZb0G7KY9LtIsseib949L1WmZ6eaiFJfVnPtBIu//gjn+C/KTxsM8/CdNEiv0AcGyLnZVOxJAarAOFRx4MW5y5sUNf61irLu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303651; c=relaxed/simple; bh=Ejq3GCF3ALDtojefcexMkYFTMI2wVEXKIrBlhj81Swc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YijhmSA/P25RnzsTdzykd8+F75egzCEx7tezmNM4OfbLSyNATdVED5xY0CtFZQvqf55B361nX7jt4ZBE22HX6XOTp7YiuJ31A3gLoF1WSizM+Tc+T/N9kBGtYit4mnnvlmdwAuUFNoXH/mdYrfmy1iqWQRaKg3sdwzI2s8LYHic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Re1956Jw; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hzF6FiwW; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Re1956Jw"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hzF6FiwW" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE7eX63123186 for ; Fri, 17 Jul 2026 15:54:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= EagaE396zMSCowVPFT/Lv2P0BLvUgaUxoxYWM76TMv4=; b=Re1956JwAckyOO7o adAI0amBabVaNIeGGa4UbKyHrNxHxhWnyGdw8RY0NGfM7in+VQsBr7IWv6ZTwRD+ KxVFEnzjgBFmxeOCa7WtVt5BrvNFh1DZdeFmmnT3FUXJb8RvOSI6BlwsM7XvM6qo wIo8QLHyavTqHzoP4T9sfDK4fbLlDUTWz/nof5UdXhzBg06DAxaTIr5Bl2cGc/6m TVVYSDh/6zz0zOATU3jLECb0z1mqRHDeTYfr02GHznEw6tz/pMVGVYEhE8QOwaJl 90oFrQoO8e2sRvJmwD44Wj6IyFiNNsYfzDauJuc00t7yedhnA3w06lPef3HsqAJa xbaipA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ff3u6mh26-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:09 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c075c1e25so107838351cf.3 for ; Fri, 17 Jul 2026 08:54:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303649; x=1784908449; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EagaE396zMSCowVPFT/Lv2P0BLvUgaUxoxYWM76TMv4=; b=hzF6FiwWqH550MyNSHqui4DT2z9rmk4DpbcwNSsFkYTsqq31+eLH7H6EpRUAqOOGyq XNzCBhh5D06+b3omxl9MbpPdsjs/xe3I6R3PTooWMuwm9VwVmv3v2U85mzLGXVPMNYpg 9P+AhO5M+wm9kG/aBTWoiT+RplNPjEXUiqhEMYmVu+MFqc850AkwwlzBi6awB7sj5X5n 1Tg1OhR2xxLb78J0Uq470TxDkV776jJVFbHZOzy2eIQk1I/6VQwfMqLsJxmlMB/SUy1x Wj6r9xv7EmRUkYUlDrDHJoYyebfQbPMPQg/crU2dHOt2Su/0skttjrygjhV4dZsEjNOS swGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303649; x=1784908449; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=EagaE396zMSCowVPFT/Lv2P0BLvUgaUxoxYWM76TMv4=; b=CUz7eoW7gHEULUU5dYLiASmSWpHrZ5GRhYOb77v01nPvBY4b06EeH+oQN97++mb6Kk tarW8QhopJdb23Spw8s/Cep1Jds1PXgww5BaDk2rPwTbo6kMQk9HzLj9dyZksU9yQ1gz a9/PY3LJj0++NoXbkDDvHKh0eZ1nYUEaipXb0ucJRde/Sxky9628HABfoBXZ0W1iQcl5 TmCKjIZR9PDw0hZiOTXWQTnd/S1Ga9YUQ2+Zt/mkdUtGFD56ks+Ojn//Ibq6CSfQRODF w8idYaKjaE90ycXHi9EOPticslgsSxTmrlWjrzIFQmVkdcdaPVKlneSW2AhZsXDlw9f+ 1/MA== X-Forwarded-Encrypted: i=1; AHgh+RqUv57HArpFq3YFbHPzmax0vDR14jxV717t6i9cos7RJyI+VqJhvcsbXjCddjMYGQ0pDwX2Iiq11miOmi8=@vger.kernel.org X-Gm-Message-State: AOJu0YzNyyfeM8iPZZMxWFLkIDWt4sfubVNpIObE6CG8+TZObHumn1q3 AXcKp1NIBlgI9tZWX6Yq6oHIsC+92M4DNx4ngUpREGqbiiV/bOkbqDX5OBW/vdhC3rOVfhej4Mz Nj51QUXUBERd5LvxtUW/ZeV9dFz9wi1hY45h0WAJIxOlbHKXnV2vypywus7lLFTCprJI= X-Gm-Gg: AfdE7cmxBHki3J1s/0uwiwGx+Mi85lFsaOs7xpHtzbsDpHd5Nhv7drpc0dP6RtEQDVb 3YSGHAq2YjeUdjOa3DqChsuEducudmKEQhtYgOb6+IZIgwzhf6TkRmucbsaeaCpMzIUwPrwEsjh FsKFVrS3ywgN5xgqLBDudcgqIbVo0OxpgffjHZO1e3ArGGarGV7/kEYF3GsvUTeBWuveVZmHgBy FaPTg+c75AfvqoYX3csrAQJdOgaI8zbGlyokl/VMWs60TTkRTgxxAgYUTw28WAV35qRTM6ybn7T kqVBbIZJDgkFWXGbOImmMTxQ0Coe5LxUh+vXyK/TLFOoXBYY/oM6pyZoqCbMWaBe7NmQnmGJnnm Y3UuU3nfDwzR/ErKghI69oZxuvbwg4Q== X-Received: by 2002:a05:622a:1825:b0:51c:10aa:9cd with SMTP id d75a77b69052e-5213cbdbbfcmr31141091cf.38.1784303648725; Fri, 17 Jul 2026 08:54:08 -0700 (PDT) X-Received: by 2002:a05:622a:1825:b0:51c:10aa:9cd with SMTP id d75a77b69052e-5213cbdbbfcmr31140621cf.38.1784303648115; Fri, 17 Jul 2026 08:54:08 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.54.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:54:07 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:36 +0200 Subject: [PATCH v6 7/8] crypto: qce - Use a fallback for CCM with a partial final block Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-7-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1622; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=Ejq3GCF3ALDtojefcexMkYFTMI2wVEXKIrBlhj81Swc=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAPaFTiZJIikiS+XIqgLGbRUYSYPJnKjbz9N KdPL6DgEn6JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQDwAKCRAFnS7L/zaE wx7sD/98xG5RZf4PJvVVfk3S7ql5N3aOH5ILUH2o3aR53LkEfo5TM2M7sH5EVQNWK9j4vkTFNVF /GO77AUPmFfCvpI5sejifI9saF2+CkDeTpKnAfdkLx7jdodVj7XLLIwqNoI+F2QrCfJL37V0VKr fzU7+84itQjV+VMgcFrRm3K38vr1TY1ThxEgFa5wcaBzltqPVpBQn8Pq9k0YgUUL6xD2TxA/Dpk A9MsFidVnUzV6n1QBc0hPmOyMlIvzRIMsHU/7EvqkTG8Cio5mdM1ky2mluMBmIntRCHrFctEZyU Kx3PBv6jxv2EWG3P72HCLEg8vUAQccpnMW4iwjDE6KUI8EQaHiMuDmUpw4zKE9iFbKagMGN0qUW kHGJf16hKAgo/DCgVsYNE8FACQ/ZCx5EXqXXNLTyegjRq1Dft9W/RXSDHPB4w2UeVNYuNs1XbXY 3uIak4BMu/3m07FmtCYEKeizDrzscV1iBZrdE9QRYdyAxxQJDWW6ruosSHH+dazDoQa5lywFWr/ rFqlhNYcqkEmgPfs1qKJf/YNHPLhXBFVskSKjHVPPeTCIr4pdefIAi8e+FKDPqqfh3m6M4v9kUP 5MbErzwEAnaqtZNLbh/NdpazUmpZzTMafOm6RzyH+AkCBHJSnloppqoWD+K3r0sabnguUWUV4lz dZv3CQl1zZQ31vw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX6DnhtwUsv7hL 7ADuwCsGOFLFagqywu0aPatg/o2FgdHWl8ShgDplNLiRZdKghPDstakNYczOZ9uMAxvLT1ekDLs DiWWOeUBXTMXoR0qe2wXRnkGGsSEXiPCRB4t7QO2qwZgxM2imp7+sosctv8agUXixN9TCrxSDXA LnUWEklJBf6YgQFd6ZOmrfHbHM7/IDLohOwAZRwgD5u4cio0T/2E6IkgDWL4n0ua4TWDadidCr4 6j5FdfHlRNU7YjkLQzccyyTHxvWS/DDFLklgrqsWwqRJ5duEeuV014dd53effQuyDRPL/8jCcMe UBQGt4fByYMKiN3l5co547I8VWk1GejwFV5NW+dUJS88TzK6w8XoQTV0p0ElfsxRo+Jomy2i+if J0Dlhqi+7ekxDxP3Z3UuwCWYXbI+WMEe5LW/HYF5DhBelscXOZa+tOhWcQh78OJKUszmkL1zqPe vQhDf18H9Fn3/H9lQXw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfXzYlehHhwM2zM U5ShOCSplUulO2ZeSpVxGqpezpDI+Z47RGKKaLBttGnvzJppf24rs4wrhjpl9LojhWzgBSAIZnf 4uvuC70RSE1rV8HHOQnu/W2VnKc6m90= X-Authority-Analysis: v=2.4 cv=DYMnbPtW c=1 sm=1 tr=0 ts=6a5a5021 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=dx2SfONCXZg6tt9xEGkA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: M2F4IJ4Q4qPwHVpMwtFkmC_WeHGGqbm6 X-Proofpoint-ORIG-GUID: M2F4IJ4Q4qPwHVpMwtFkmC_WeHGGqbm6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 adultscore=0 priorityscore=1501 spamscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 CCM builds on AES-CTR for encryption, and the crypto engine stalls on a partial final block just as it does for plain ctr(aes): a payload whose length is not a multiple of the AES block size leaves the operation incomplete and fails with a hardware operation error. This was caught by the ccm(aes) crypto self-tests. Force the software fallback for CCM requests whose message length is not block aligned, reusing the driver's existing need_fallback mechanism. Cc: stable@vger.kernel.org Fixes: 9363efb4181c ("crypto: qce - Add support for AEAD algorithms") Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/aead.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/crypto/qce/aead.c b/drivers/crypto/qce/aead.c index 336614a11377e0be246817da584296124f4de5d8..4fa018204cb628c112f64c45ff6= c7407df73b945 100644 --- a/drivers/crypto/qce/aead.c +++ b/drivers/crypto/qce/aead.c @@ -514,6 +514,14 @@ static int qce_aead_crypt(struct aead_request *req, in= t encrypt) ctx->need_fallback =3D true; } =20 + /* + * CCM uses AES-CTR internally and the CE stalls on a partial final + * block, so a payload that is not a multiple of the block size has to + * be handled by the fallback. + */ + if (IS_CCM(rctx->flags) && !IS_ALIGNED(rctx->cryptlen, AES_BLOCK_SIZE)) + ctx->need_fallback =3D true; + /* If fallback is needed, schedule and exit */ if (ctx->need_fallback) { /* Reset need_fallback in case the same ctx is used for another transact= ion */ --=20 2.47.3 From nobody Sat Jul 25 04:55:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF8C742FCD7 for ; Fri, 17 Jul 2026 15:54:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303654; cv=none; b=o71dHuAyIuw4ZVGe7fFeKZe8BczLhrlht7i4DrFxozSxd9IzBatYr22UjrVY8HkepcCacyqPjxpcKjnngjtmx71SWAbwyu3lpAtss3nssjGu7zNxfl4ERZl2bBWfmqQgkRGeuq4ebrP2qV9IB6Z33ZflKNfkXzS3p8T4P053QME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784303654; c=relaxed/simple; bh=q9N7xvaeFpdxSCk21VylCtI8nPZtUNdJ9Z4Mvdcp2Gg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gwlQGZDinF9O3ctvW83IEWBpaGxvTgIsw8CJGZHLdITKMyUleUInW5hIqkezLgvSsXbfPCNMSjWN9g7NSWvZ0/dELg4MTEVeBuoto/+/zZECZtVNlS5CdDtrYzeFZWCUDFxAhCNPqrJwV17+iUjV6xIUcoIsBHk/lLOri7V4BZw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=nklPZC5P; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=C+fzwevC; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="nklPZC5P"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="C+fzwevC" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HE8AHH2044664 for ; Fri, 17 Jul 2026 15:54:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= onHSjGInX0rV0mVGlTmmcWeekHeD6EjKdPIS+Vcr65E=; b=nklPZC5P7auanFpW cqDz7hb5FHhOldc9e7EGx1GImFGDyndJDRKuBem7CjgW0dJsp9jsTT+S2/Drtm2k hh030J49c3tk7H3mrNMjOFtsL3bjr2wIvq3N7MJf4ZdC8LBydqy3QBhOV6C0C4AT Cb+h7ARXi1GQtX6KcM0ZdGOhNGXdyLsytunzk+txKoYzoGKnij90TGoG+kKynwTZ lmgJCmujHSa7UbHlUafOaRvPkRfxfNJXrGBWvS/tniUcirLM3kwd0p0w9wg5wm+3 sI4UHMGTB26wD+pf1u0lLkhh6LlSG8nHYWpYOiBT712m4vGc/OEEfNvyVny9ZuVE wG9qDw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fff8124kv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 15:54:11 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c26012cd0so137723821cf.0 for ; Fri, 17 Jul 2026 08:54:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784303651; x=1784908451; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=onHSjGInX0rV0mVGlTmmcWeekHeD6EjKdPIS+Vcr65E=; b=C+fzwevCeJr25vx6rRLYKCBFpCkZDJOQwr8g8ZSksfOEMKE13Z29qOphl7QkuGPoQu tKZU0p3qhhaQK/1UnbCgd/2dx3gOZOSk1G6snmWerOIviUumU9gkSOwKnGUrfZTjrujF XGt6KhFzfFwT3MXp4jONgwt7IJzNUZS8mAdcu9JFaAE1VrKXtbKe7a99GORauySNJ74V vFyaNGDzFGqHKecxE4fT3qrMmiqwMewAZhq2x//5gMwKC26dF6PS6duU0cx4cg8AQDTt 4J+bHLJUkNrw+bzDZiGi+PCwn1OI3Vx4XYGU27+bCepecDCxIo4RJX7VVPXcVuII0gFB CfQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784303651; x=1784908451; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=onHSjGInX0rV0mVGlTmmcWeekHeD6EjKdPIS+Vcr65E=; b=qT+YhdlPXH+b3CtvO1S6Yco4sNYMEUHx5TK6ajbiFI8eISZTToXDsg/N9Ec5NbPklg LIJpACXZxVRyhk7bjWNt0f/OM7NOpdAv292UEh5A0ydjgPfQvz4HBDoiBeDXxi43ocLP MvpQiMh4UurmmlZJKUAxK1sYDqAegxc6VcW+sMKbNDg2Zr1Ilzg8xDPuKYGs2wkw8gln q1kj9lpz8K0lnJDCNx8adBP6xrKFYg72pbTxqTWniucs9aceemFeXG/Q4MbvhvQ73Rzr k1PNkL+XlBMkftZj9COgDEh0luQ6x8hqgJ6ac/i7kUI8H5wBLQ8wbxhspupWLQ02OkMG kYGw== X-Forwarded-Encrypted: i=1; AHgh+RqiD3pFfWDyotVrPFah+SdmvUKrlNXiCiC196G+KzB5nA1aiHGQWIhxjp3/sqeM/WoH8J5386+HmWfc4Q4=@vger.kernel.org X-Gm-Message-State: AOJu0YyfFehY6Wlqo/CB5beDp2MBYl3lQGfzOJvKwzU8ZvDBSqLUESvi VpNUKf04Xl2LnZd99kbkw8hRe8AL4CA93H9/WCM5lQsk7bEA/ZgN8XIAclqI5dmLvG0OVrzAgf5 p4S53xbWJGGGQgJBrd+NYI5wX7zPrtF0Ur3F05NvEvPIH9Kh69oOr3zAf0JF+spvxVfI= X-Gm-Gg: AfdE7cmgmfSgIyaBlcZ3zm7cVA0dpRqLkRKYeAJbGXwdEIqTrlueYDJdPFmA6k8FG60 rdoxgw5qyHzp8FdA16DKpxJroVLY9gZaJXr+xH+cvVtzYtXmk9UNYzNM6sWRbZkCCSu83lR453O 9wZUWmXKCcyKxg3p10rDpzIhdTI5L7RoNEk2t+mtQtqNQGUgdNy5M/Vh/bKpHBfrJnjvejfXHCN PwsUv1PlcFjk/qtmLOgg8wyFWIRf0ogRPv0ENLE9ILuoV4CGyjsdXGPeBG1Pu9GVQnLecyW+3go Yghgs8xTQePHp92vw3G0l/hreiRGchizrJ1BeHADZKZzHSJuY4VceoEPKk3zdPGcQguft2BTper Z+/Hh4452VvsGIGUlr2y96PdBj56Fnw== X-Received: by 2002:ac8:7dd0:0:b0:51a:8c97:938f with SMTP id d75a77b69052e-5213e18860fmr28892761cf.70.1784303650921; Fri, 17 Jul 2026 08:54:10 -0700 (PDT) X-Received: by 2002:ac8:7dd0:0:b0:51a:8c97:938f with SMTP id d75a77b69052e-5213e18860fmr28892331cf.70.1784303650370; Fri, 17 Jul 2026 08:54:10 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dc44:5b1b:5396:79d6]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4954a2a2511sm47057095e9.1.2026.07.17.08.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 08:54:09 -0700 (PDT) From: Bartosz Golaszewski Date: Fri, 17 Jul 2026 17:53:37 +0200 Subject: [PATCH v6 8/8] crypto: qce - Use fallback for CCM with a fragmented payload Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260717-qce-fix-self-tests-v6-8-455775fe5f6c@oss.qualcomm.com> References: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> In-Reply-To: <20260717-qce-fix-self-tests-v6-0-455775fe5f6c@oss.qualcomm.com> To: Thara Gopinath , Herbert Xu , "David S. Miller" , Stanimir Varbanov , Eneas U de Queiroz , Kuldeep Singh , Eric Biggers Cc: linux-crypto@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, brgl@kernel.org, Bartosz Golaszewski , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2908; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=q9N7xvaeFpdxSCk21VylCtI8nPZtUNdJ9Z4Mvdcp2Gg=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWlAQXNCChL1UrK4bRfwA92PSlOjC2dUMwPDrz J1BpRodDGqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalpQEAAKCRAFnS7L/zaE wzKaD/4lR9hqCPGegnYdO7QAL4CJe9GaNy27JCMbb3siL5uedhPk96D3l279BT1z3jZEgRE8gFn cArGyFAOlxtlf1iVnJUJAtdysX+KAoYmyyfzudcN3PEuDHjW2l3ZQKmYJRHCIAN30Xhyv/w8N8z mp78f8PRdVbl3MH+2OZGVaX1S5ZcRNZV32AeXmLtLbBax9l1McFjZZvC5xkuy1PW3MauopQ/Q7f F2XU1jqjfqDXIYcCJ0sGjfC40vf1s/xvVPnfYp/EZqkwJ4mkdCgA6k20fmjJaGSNJTTh1XtjTK1 EHFMvQMk0VLa8iJ4pLFhvgR14RIqdt4QEiBIAX7Gvoak4yC+CyDyeJHeAdLs1MQlmIz7vCnuiXc YRYuXI5+gJVKk+dKKCkSXYXriRocZYbJNzCPCVS1IFXoR2PnkSnRMon+MGivZmDEm2luSKMZ/nm tsbgZyub/P3PuCv4D8nussWkc0yJIU0wu0o0p1UiOC/21rmAHruj/p1VlFbsrKzm54Rz7tvS5YI Hu/iYd3mEY9XTrxvgx3Jl7JZDxuzs5bRP6xp9jWcl/GBsAF4pRPf6t6zWOgA6ntLX4I58QSDX9E yGsm40cqbJ1Ly+5zeNUVADcq/ngWpdk4LYbx9yrQIfcE++O48azRBsb+xz7rrZHtIdgw+xkJidR zxO6Q5IB+xUMx1w== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=RbqgzVtv c=1 sm=1 tr=0 ts=6a5a5023 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=phyxH6jkQibGXiXynFEA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: D00ozHsknolo7B-BFD4CpBRTadlYCW6L X-Proofpoint-ORIG-GUID: D00ozHsknolo7B-BFD4CpBRTadlYCW6L X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX558giGavB8it OovmbKkmVm2fvzMkKlutkIz3qJgSK3X/KeHkr7Ura/GwttsT5DZBtyXMDpSbSYaoqNGLkAvtFua S//HtkeMF0wp7jAjbMCXFYths7wD8zkz2vJ1zlvN7fLVBpPJHFZmin074RxMrlIg4OL0YdzQIAM na9s7pLAXOGx2B2ByFyVAxVikOvyxAVpQvwL4ypX7nu/76YG4QUcWnCdNqzUvcuBDoCWjDGRcLp Y1qmJ2PZyKRF/AJoIeGXgnplRE21AcgIw/hvMAajV7g9en0q5pphcBGaaaA0yCWOTdbSRnO0Pxr sb9FzDRkG39MN0NWULoPVXSb8s7ew3NRLhC1kKsiB5xjSAOSHWfyxQoIZh9Hw947yqXJKvCzjYT 5331TqhVcm1VCDjn5kn63Rpqyh/32+uUqsJ+q0NDO48+wh8BIWCkNjZj/gkFO0F0QyeSckHXbrN V0grl//MccnUTJoJdAA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDE2MiBTYWx0ZWRfX0dHIWZHLu0w4 wLLf+/fUoXR2MMPnd41yxsjZUO6LTHwQbbLU7QIk7GucxfbfSNtWKBi2AlclWxQuhkbkJopjk8f n/7BD3D8AmC60yQfRwo6+/+cFxqDA4I= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-17_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 suspectscore=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170162 The crypto engine reliably processes CCM only when the message payload is a single contiguous buffer. The associated data is already linearized into a bounce buffer before being submitted, but when the payload itself is split across multiple scatterlist entries the engine stalls waiting for input and the request fails with a hardware operation error. This was uncovered by the crypto self-tests, which feed the algorithms randomly fragmented buffers. Detect a payload that spans more than one scatterlist entry (in either the source or the destination, skipping past the associated data) and route the request to the software fallback. Cc: stable@vger.kernel.org Fixes: 9363efb4181c ("crypto: qce - Add support for AEAD algorithms") Tested-by: Kuldeep Singh Signed-off-by: Bartosz Golaszewski --- drivers/crypto/qce/aead.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qce/aead.c b/drivers/crypto/qce/aead.c index 4fa018204cb628c112f64c45ff6c7407df73b945..9ff8fe2a7efcd2734e4ff029744= 961a7b1101013 100644 --- a/drivers/crypto/qce/aead.c +++ b/drivers/crypto/qce/aead.c @@ -498,7 +498,8 @@ static int qce_aead_crypt(struct aead_request *req, int= encrypt) struct qce_aead_reqctx *rctx =3D aead_request_ctx_dma(req); struct qce_aead_ctx *ctx =3D crypto_aead_ctx(tfm); struct qce_alg_template *tmpl =3D to_aead_tmpl(tfm); - unsigned int blocksize =3D crypto_aead_blocksize(tfm); + unsigned int blocksize =3D crypto_aead_blocksize(tfm), authsize; + struct scatterlist __sg[2], *msg_sg; =20 rctx->flags =3D tmpl->alg_flags; rctx->flags |=3D encrypt ? QCE_ENCRYPT : QCE_DECRYPT; @@ -522,6 +523,27 @@ static int qce_aead_crypt(struct aead_request *req, in= t encrypt) if (IS_CCM(rctx->flags) && !IS_ALIGNED(rctx->cryptlen, AES_BLOCK_SIZE)) ctx->need_fallback =3D true; =20 + /* + * The CE reliably processes CCM only when the message payload is a + * single contiguous buffer. The associated data is linearized into a + * bounce buffer before being handed to the engine, but a fragmented + * payload makes the engine stall waiting for input, so route those + * requests to the fallback. + */ + if (IS_CCM(rctx->flags) && rctx->cryptlen) { + authsize =3D ctx->authsize; + + msg_sg =3D scatterwalk_ffwd(__sg, req->src, req->assoclen); + if (sg_nents_for_len(msg_sg, rctx->cryptlen + + (encrypt ? 0 : authsize)) > 1) + ctx->need_fallback =3D true; + + msg_sg =3D scatterwalk_ffwd(__sg, req->dst, req->assoclen); + if (sg_nents_for_len(msg_sg, rctx->cryptlen + + (encrypt ? authsize : 0)) > 1) + ctx->need_fallback =3D true; + } + /* If fallback is needed, schedule and exit */ if (ctx->need_fallback) { /* Reset need_fallback in case the same ctx is used for another transact= ion */ --=20 2.47.3