From patchwork Thu Feb 27 10:14:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994051 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FC47C1B087 for ; Thu, 27 Feb 2025 10:15:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEB106B008A; Thu, 27 Feb 2025 05:15:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A7FD1280004; Thu, 27 Feb 2025 05:15:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 915CA6B0092; Thu, 27 Feb 2025 05:15:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 70FD16B008A for ; Thu, 27 Feb 2025 05:15:03 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 22EE680CF2 for ; Thu, 27 Feb 2025 10:15:03 +0000 (UTC) X-FDA: 83165316486.05.EE2BC34 Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf14.hostedemail.com (Postfix) with ESMTP id 53E5A10002E for ; Thu, 27 Feb 2025 10:15:00 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=dTTXozfv; spf=pass (imf14.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651301; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=B0mE1hvDwybCOi8Ma7SncwsCTkexIE9OZoKz2lEpXNE=; b=HXsKx91+InnogDWRG0P2Vmb88XW94xkgJEOxcGpbnTCixKFFCUp4jjQleud6ONbij9WCf+ qmBMtvWQjmIelQBPQUOOC2haMXlNfA4xnXZREnMpobbq5l4Z2pCZin9ABLgfyleMAp6myQ kgpkwSwrqqrkcX6st7NwtMD2preP7E0= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=dTTXozfv; spf=pass (imf14.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651301; a=rsa-sha256; cv=none; b=DymPQHg+BxQqjM+j8wCg6GVhTRMNvETo+zpc5y6sPzDFmiPmEqdjUN1xQQYMQkrlPd/bJq XOXLhNJge/V70+1dBkAHzXZmNYLmEpBa8SfCR82O0EaAl5chYy1aVcoY1iOoPqyWg56rEs jTYdmdRrm5ONRL04koM5IaFooKjhoic= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=B0mE1hvDwybCOi8Ma7SncwsCTkexIE9OZoKz2lEpXNE=; b=dTTXozfvVo/hJt1WOaRBEC3ouX lqowE/dGvjahetzBhkorXNlmG//rfv/fUaxwOgjcg8clQPZBqs+/m+5/i1PCqQYnvPUGtL4oPi1e3 JQJF+4/Z5RfUzxOoN6ihJZrfe3cppEbpToVSRGkFvPU4jLvtdQYvWa0Uz75B9YH/Eic0wVqA9lt1r 2FanPtFLMIK6B2e12+dtkq4ah3sK4phQfNrZvGghq/QbpuRHguDdsA3fGPDxZL5Ey7Ja/c/CsAY83 a17cAj0AS4spz8/cIssGRzF/mOWpfwXYjk/ngmwWTgMpOd2SJOBgvoDBzM4/QsjEOZh2E0OZ+uhX+ jxRUidLA==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnaut-002Dqc-2J; Thu, 27 Feb 2025 18:14:56 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:14:55 +0800 Date: Thu, 27 Feb 2025 18:14:55 +0800 Message-Id: In-Reply-To: References: From: Herbert Xu Subject: [PATCH 1/7] crypto: iaa - Test the correct request flag To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 53E5A10002E X-Stat-Signature: 634d3oqmjjeq8j91mwgua6kq8erqoedy X-HE-Tag: 1740651300-244227 X-HE-Meta: U2FsdGVkX19nH31RiPXbRIoiHxSOd9qI6Bcu5k5QvdOEegEGLkWMwrlNAh0yNyI+zAz1oOLEqmzfPDAKDj5UYRChqP2nqag+47F5HEnjta1yJp6Mg/TfDx/sasfrYjBejHUlh9D86h06YdXl9lacS1xFUvXAxFAIQzeO2kXeEaw+LJX+OwSU9Nff/1rPXky2AjxZ2eYO2R45q0l07E8frvBJaF6bCP9/nU6YZZOgvfXs2Diuzx4efUZMs5/KaiPe4TV6Sj836gZDq3wz0SdDQNYWesnnwuhFstLzJzZylFAIP+Wa7wovefhqzgyCLwv0aZ73K7zjIQHd2tD7Qf7vgqeugzXR1pQBMdz6kpmRrOMWk9fKgAtv6OOjyj8SDjYMg5335jVaRWR3oOHaH/hWwTONB5uYd9VI/eibG5QQUhTcE8+MYO8gP9A247s8N75FYoAIs7v4PERc6x+QiVp5CSV+s7f3VtUM6yWxGm7olwJwtEk15lMJV8MZ3ZqiXRaHrL9zEoc3mvwdvs6+/jSLS9YeNe3ytyw0txk6LkSGeh3H42OSCM8+1Un++eqKa1emHoTn9u2/orM/JXwrxn+UUwMBrHnxTxkzO0FIX5rwxA0uUH/DL6CCC+846jGMAk/gDD2XNVjPT88/r26VomXR5jdFUSAZGS+jtH307uUEakOzIo82aBWAMY3CPeLV6j5m+56d8iVrEn86lkwXIfGnbdgd0+qo07J7sNQEjFJ2SOUGTrNT+5DdcFy0iuIcs4MKkLKqK6UXSxt8C19NvVaiEarUIcVTtYv7c3COcaYbFtlropQopnEFZ1gRuRc+BZ1vcx1h5/w8s7JVOwil0GQTvZykjrka3TDYMver2Np0/WpWmZA6DHyW4BRow5K3tczqN+FJeK2nIBJGCxabmjeSJWN0tzoWB7NKJbEjKTEyid6mOQJgqK+vs6RMLfiewRGEokAcBX6cVcb1xaIF042 V2gYslPw 6fAS/uWzs1sn/m4Kh+1ZY3Irs/SydHayd8/I7FaJDsksZ7LPZpFHnkdlxQY3+7ZYBbhiyUrMpryuNf46ocMuIQBfTnpioYLcORzuFYUI2lbu9FoKU4B63D6j0yBY5E36hRotisfeFXsAUc1Rh2/fnUG+NHJppTNhy4Vtc5etB3XwbW83WJAUEnu25oTs7FFCLbLwwE+06uDEzhiui1butYlg0WQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Test the correct flags for the MAY_SLEEP bit. Fixes: 2ec6761df889 ("crypto: iaa - Add support for deflate-iaa compression algorithm") Signed-off-by: Herbert Xu --- drivers/crypto/intel/iaa/iaa_crypto_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/intel/iaa/iaa_crypto_main.c b/drivers/crypto/intel/iaa/iaa_crypto_main.c index c3776b0de51d..990ea46955bb 100644 --- a/drivers/crypto/intel/iaa/iaa_crypto_main.c +++ b/drivers/crypto/intel/iaa/iaa_crypto_main.c @@ -1537,7 +1537,7 @@ static int iaa_comp_acompress(struct acomp_req *req) iaa_wq = idxd_wq_get_private(wq); if (!req->dst) { - gfp_t flags = req->flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : GFP_ATOMIC; + gfp_t flags = req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : GFP_ATOMIC; /* incompressible data will always be < 2 * slen */ req->dlen = 2 * req->slen; @@ -1619,7 +1619,7 @@ static int iaa_comp_acompress(struct acomp_req *req) static int iaa_comp_adecompress_alloc_dest(struct acomp_req *req) { - gfp_t flags = req->flags & CRYPTO_TFM_REQ_MAY_SLEEP ? + gfp_t flags = req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : GFP_ATOMIC; struct crypto_tfm *tfm = req->base.tfm; dma_addr_t src_addr, dst_addr; From patchwork Thu Feb 27 10:14:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994052 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19E76C19F2E for ; Thu, 27 Feb 2025 10:15:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BFEAB280005; Thu, 27 Feb 2025 05:15:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B37E1280004; Thu, 27 Feb 2025 05:15:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B1C7280005; Thu, 27 Feb 2025 05:15:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 7BCEE280004 for ; Thu, 27 Feb 2025 05:15:04 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1E26B80E99 for ; Thu, 27 Feb 2025 10:15:04 +0000 (UTC) X-FDA: 83165316528.24.03ABDAA Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf24.hostedemail.com (Postfix) with ESMTP id 513E5180066 for ; Thu, 27 Feb 2025 10:15:01 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=f6ptTZnG; spf=pass (imf24.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651302; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=s0kKNBPaAqYeBEw8gVtFkyAt+P3FpXQ+B0aCH0krQCE=; b=eJXlkgJlCkebx6nrC/oNYLZ9glmKXkbASGnbY/VjkXa0btrXKA1SXXp9mYMmu5s899Gvs1 AOb03v9AGF9rEv3U6Y5ElgYso+lrelsLVG6BGSuPnbukffDIyu7PiUNl4CSfpxSh8GH0Wq mQv4VqbYMKxgerEN8Uaboumz/dTQxxw= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=f6ptTZnG; spf=pass (imf24.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651302; a=rsa-sha256; cv=none; b=Ft0+74Iz108UMn+Sz2PmwrbwCqcYZmJYg50vDSHWN9NejMeO/D3ONm3pOuWXZTz+Jdsqp+ Y4djh/HS1AUCPXkBUuYhgihWaWRy7pXyTXirp7lehZehqnn0VGLZCAlzDmrRqOZWL4YOav llQktZkI8n6f0PdAZ9DUnDfD8Df4lJk= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=s0kKNBPaAqYeBEw8gVtFkyAt+P3FpXQ+B0aCH0krQCE=; b=f6ptTZnGEsG8pAmJ12gduGoGtw LJvvcNd0JbrcZLgOpdFFrtQDySCARECl1MpUPPvhtjvbeTsNznbA3VpGXt/vHVyHLe1WwNcw3uOLz lZMM06Lb1fALO/3Ki1Xakt9jXY6ioVSAp9IVrFA7R0CUBwg+rm+90oEt4mP+K25cfWvhAxz4Gr5Vw jg3/f1uAdN8leG6+CV+Tcky7b6DR/cpA4gT0OHEWtnFZOAuDWHqgBafiR1L+1ThzhPow3AVi6CSoo +2JuQ9OgwWMxDkd98NUCUxZ3SXGrS7lvEHzO7Z49vDS7yj2ns96lfr7RN7L5Ay1c6XARioCDJPQjq t8NPMhlw==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnauw-002Dqn-00; Thu, 27 Feb 2025 18:14:59 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:14:57 +0800 Date: Thu, 27 Feb 2025 18:14:57 +0800 Message-Id: In-Reply-To: References: From: Herbert Xu Subject: [PATCH 2/7] crypto: acomp - Remove acomp request flags To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspamd-Queue-Id: 513E5180066 X-Stat-Signature: szmmfcpbtu918b1qun1h3s6jsu8pf1ag X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740651301-215137 X-HE-Meta: U2FsdGVkX18Z7KUcFweSKp8RqQFt5ZQbNQsSmTT0/7eOPuZrNzEZhJy1hjDni0FWn8tDsVx8qodQXJqB34qE1Fx3golVZbqnugL6iihnTmyMeF8slzT9obWDZ+VrC0nUzNxkzFtVIvM6lNm9cju2aYv50RU+BcP//HAD50mkr3yOGsB3pZNhKrz9IEBdSEwccS963qv/jCg8hBaBHNbsxseuCkNSdHiVz7tnCgHLMoxsX41X6ENxEZj9zYXpBbDLMGyqlo2oMrJvIinR1c/xVlw3ahZv2fgElJjjDbbPIrB9onPuDwDM7U4NYHwJfk2m0BK/SpKdfM1ljpFZ/KtjXazdt6UPjmANDG32qNtLLVc73mMJKv6NB/y4C7pE3C2l27PGA/WyB50DE+b0oeHSycuiU/8PMHL4NmcAJODtdiGcrqvVS/m38vAyyXWboWANURc5HqvInRVXRBQ1H8FrzlstfIozF09z7l9KU4ZLThA/advXeGPa2XODBbhcnK5gqc3HvvsSWRm7sP/aze2yx5/RbuiSSiXRgQv8n1VackcIWTPi+Phw0xYKF2WxHvCO1CnrEPREErqlJkWJP73rtIenKbsrkeGJ5Q2FcdLjm7ypL9nlNRR9QdG745iCCgU/a909tX7G/wCdLOb+Xft9FiUkJBI1hxegNMBm4tk2Prw7L/j8XwZ9rqmNc5SfaKiKqjc7R+8vaFxKsW+q48+iwiBk5zsfWwwBjDPHw0ORecKxqpKy896ZH2/Ovq87OA8LziWNnkvwGOv6BAve+8s0FtdIbJUoccTNXQ+6Cgstgdab/1lLOUIGWWTzLgF/D2mewDJra/URazyREVlWrNMU9sA3oxKRw1qVbnvjnWWJOFCtKe0UVEw48E7Q0CBrmwDZB52E43GhwdylRO+YkZBSloJt6qs8OTV9KUUsSrmRSooVl+qYvOYQ2ISSottb5dn2yzQuqWiaHVyqkeEe8IT gGkOZ8PG 8wsSziBPXDp0mGTbsOkNTuxgY8aWV+mpFRsm9cgq5/0OJG1h7KSzvQ/K5ju0YdDt8RcBHHgNYYo22qCHUjWDb9rfKwYQM5HDg2Q09gkv2JXJOT4jzcknyqZJ3SkW6moQF6DyptZsPHBviFqiKYsrx1S+gKdJC/Dwf94kIi/YCq2l6qgselo7Px7jlnT/LfMdy2Gg70l1y9vq+LjK4Kop8Zh1ueA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The acomp request flags field duplicates the base request flags and is confusing. Remove it. Signed-off-by: Herbert Xu --- crypto/acompress.c | 2 +- include/crypto/acompress.h | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/crypto/acompress.c b/crypto/acompress.c index 6fdf0ff9f3c0..30176316140a 100644 --- a/crypto/acompress.c +++ b/crypto/acompress.c @@ -144,7 +144,7 @@ void acomp_request_free(struct acomp_req *req) if (tfm->__crt_alg->cra_type != &crypto_acomp_type) crypto_acomp_scomp_free_ctx(req); - if (req->flags & CRYPTO_ACOMP_ALLOC_OUTPUT) { + if (req->base.flags & CRYPTO_ACOMP_ALLOC_OUTPUT) { acomp->dst_free(req->dst); req->dst = NULL; } diff --git a/include/crypto/acompress.h b/include/crypto/acompress.h index 54937b615239..b6d5136e689d 100644 --- a/include/crypto/acompress.h +++ b/include/crypto/acompress.h @@ -24,7 +24,6 @@ * @dst: Destination data * @slen: Size of the input buffer * @dlen: Size of the output buffer and number of bytes produced - * @flags: Internal flags * @__ctx: Start of private context data */ struct acomp_req { @@ -33,7 +32,6 @@ struct acomp_req { struct scatterlist *dst; unsigned int slen; unsigned int dlen; - u32 flags; void *__ctx[] CRYPTO_MINALIGN_ATTR; }; @@ -232,9 +230,9 @@ static inline void acomp_request_set_params(struct acomp_req *req, req->slen = slen; req->dlen = dlen; - req->flags &= ~CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags &= ~CRYPTO_ACOMP_ALLOC_OUTPUT; if (!req->dst) - req->flags |= CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags |= CRYPTO_ACOMP_ALLOC_OUTPUT; } /** From patchwork Thu Feb 27 10:15:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994053 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AA185C19F2E for ; Thu, 27 Feb 2025 10:15:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 486C9280006; Thu, 27 Feb 2025 05:15:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 411B5280004; Thu, 27 Feb 2025 05:15:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1E9A7280006; Thu, 27 Feb 2025 05:15:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 01D09280004 for ; Thu, 27 Feb 2025 05:15:06 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B4CD4160E0C for ; Thu, 27 Feb 2025 10:15:06 +0000 (UTC) X-FDA: 83165316612.07.A5B176A Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf08.hostedemail.com (Postfix) with ESMTP id 97DF8160062 for ; Thu, 27 Feb 2025 10:15:04 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=b0jjzhxD; spf=pass (imf08.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651305; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=5bLm0Q94gEJgQpTepUh8jBt4BX7iBQgckVIz1+HDSw8=; b=Cyjx7ZYi19qtltxH3P6QIprSY2BWO1Kv8MXTRpgmgFx48jaJNRO3PvRGeZL7tbjN5wXSut I+J+NlWFNSS9X8RmDizOFbDWGHPN0wS/7QaMoTnVSuHj2/H5S6GhtQF+L4Hs3GUKCNIJ+G YMia/58a1ByrXoxnJ7LnEh/I7XKQBYE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=b0jjzhxD; spf=pass (imf08.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651305; a=rsa-sha256; cv=none; b=JPIyWpB22gXyl8djPDIC/ESEHglMQu1/MyGHf7EK/ibbXhDAaLenMfX+vOYF8ghFQ3D2OS ferj430qPFV+XO2qILn0PBtXwAMXPjAQLuV33HXNZP6OSy++qm62QeaOuZu2VNJUkNudCU y4TSmxdAWuC4IEE3cmzgTu7kARIjGD0= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=5bLm0Q94gEJgQpTepUh8jBt4BX7iBQgckVIz1+HDSw8=; b=b0jjzhxDEm4w22vBdiS01nujcH tOwm/kRJycBH+iY8c3ynLYLldXGucQyNXLUH1C5HN8sVPf89f22M0/gB0y6c0Ww4UJVJgVmgITy1l mE3ukpTSVLy9hs7EBC8WzHQuT8inkTgul5MSFDk+X1nImEQ8/geww9KXM+i3mjD8B3lGT20jwhYF2 3qqjBxTAbZ1Hv2hxsQO1OYQh7RwCF47ccJyRUmIdYB6n1i7HUfZ5q63fzpfUAZ8fg6guKiG6VBivL QXVCaFTGPzO+WvRWzpdVhFK/myDTZPnu10hxF7axIZiVVfryaOihfYxYxUaVj6YDOOglRRIyrmmve VWK91Fbg==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnauy-002Dqy-10; Thu, 27 Feb 2025 18:15:01 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:15:00 +0800 Date: Thu, 27 Feb 2025 18:15:00 +0800 Message-Id: In-Reply-To: References: From: Herbert Xu Subject: [PATCH 3/7] crypto: acomp - Add request chaining and virtual addresses To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 97DF8160062 X-Stat-Signature: 81e9xwta68mqyygbhemzzqh9qosobbix X-HE-Tag: 1740651304-634949 X-HE-Meta: U2FsdGVkX186km0eAgbfXwavDCLxxuZ/TeVXYmkvuKlAhI8xKZN4xpek7CIP2KtUu7UXMmroKG1xWU6C/99lTK1r/mwrvAyojCBj1MRNsPEfr87LYu1YvelG//AB1LUdMWbTvYMRlvm0ahM8+3RnTAGL89zLtrcpDGkAZTdw/TmWqJGExbZHIUPPXQ335OG0+737aGXzZx9nvyeZS7GZgwU02OcLJWdV1Ol8QJCVoqvCuBFtLF9ps5N2lXXxaB0Ve5KTFKOjlQQdds7RYsrEAcD06BaBufFuc2wLEZAqqbSmbYFg8UJMjw+1xVNGaWZMe0JCrL6uxLeZq985JUmGeUsdeBUo7WUmi/0dXQ2ixmEQNsQfeUAWIE/3cqetkgCdgnyU/Sd+QiJtNH+AWzETuUL7axvtFnqtE6aPdzp0vu5HF/T5pHjfJV0ZU2WvTvyG6cQoPQvo4w8nN4tA83vCxnJmObrxb6cIRaBVhdZFjFZMO7NTct6Qe2+Iqr9Hq74Oe+OICLQkhinjEFeTvMd2helFp5t6jNvdKDeZKAShPmfDRaOVfRF+vogsy5aFWszzE12pSpXhPTfBjiYBKORv10+9e9cq5UA0AxXv0wXMg8D4yhdfrpi5nKwnUqKRO4nSkIpqo3x5FO2p+GH4FVkVR96OX/DRX5teXX24WeiIJD/i1ZF+hIToUUeWkR/NtLgmLWV6lLSPZY5gEDAZ/NDHUe5JmbY2x2pc2IuX1Rf1cLAKM+kJa3cEdUvarVm+Ms5Z+iF1RM8b1rbwf3Kt4q9dyYaTyaQO8D4Yud51Sjy+f6GS62yuwzGi6DLBJlLWu8h/cy/tJrSfHH0SAWkLkX5dd5+ViHnwtAgT5vzXXIty8l4wcOa7CtIjXvCIgpQnUiB/ChqOkHVbe01/BsXZEP+Wk/mB2186o5dzL1yz3ybCYj1PvLxcO6qCmx2CzhVXT1nUQH4IRPjbcNnE5IB29UD 4aTDcyF9 2mm/OjL2adN/GWHYgm9SntJp9RhZSNVrzDuf0m8X92lznTFVeJEUQM9BzSzfMa+y9eG1RmR5w7qZobAHjmSv2WNRQccvdlnjqC63pMpZq8VZjpb26BUcTAmUhwsFzuKNTnkn/bY85j8jRTfAQ2tybzeVMNbKRgJNTdmfBXTnCcO8B/IAYeRWd/2sYzN38rZAfGZRkpQq8BlW5eDNw03yHq2Xr4A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This adds request chaining and virtual address support to the acomp interface. It is identical to the ahash interface, except that a new flag CRYPTO_ACOMP_REQ_NONDMA has been added to indicate that the virtual addresses are not suitable for DMA. This is because all existing and potential acomp users can provide memory that is suitable for DMA so there is no need for a fall-back copy path. Signed-off-by: Herbert Xu --- crypto/acompress.c | 201 ++++++++++++++++++++++++++++ include/crypto/acompress.h | 89 ++++++++++-- include/crypto/internal/acompress.h | 22 +++ 3 files changed, 299 insertions(+), 13 deletions(-) diff --git a/crypto/acompress.c b/crypto/acompress.c index 30176316140a..d2103d4e42cc 100644 --- a/crypto/acompress.c +++ b/crypto/acompress.c @@ -23,6 +23,8 @@ struct crypto_scomp; static const struct crypto_type crypto_acomp_type; +static void acomp_reqchain_done(void *data, int err); + static inline struct acomp_alg *__crypto_acomp_alg(struct crypto_alg *alg) { return container_of(alg, struct acomp_alg, calg.base); @@ -153,6 +155,205 @@ void acomp_request_free(struct acomp_req *req) } EXPORT_SYMBOL_GPL(acomp_request_free); +static bool acomp_request_has_nondma(struct acomp_req *req) +{ + struct acomp_req *r2; + + if (acomp_request_isnondma(req)) + return true; + + list_for_each_entry(r2, &req->base.list, base.list) + if (acomp_request_isnondma(r2)) + return true; + + return false; +} + +static void acomp_save_req(struct acomp_req *req, crypto_completion_t cplt) +{ + struct crypto_acomp *tfm = crypto_acomp_reqtfm(req); + struct acomp_req_chain *state = &req->chain; + + if (!acomp_is_async(tfm)) + return; + + state->compl = req->base.complete; + state->data = req->base.data; + req->base.complete = cplt; + req->base.data = state; + state->req0 = req; +} + +static void acomp_restore_req(struct acomp_req_chain *state) +{ + struct acomp_req *req = state->req0; + struct crypto_acomp *tfm; + + tfm = crypto_acomp_reqtfm(req); + if (!acomp_is_async(tfm)) + return; + + req->base.complete = state->compl; + req->base.data = state->data; +} + +static void acomp_reqchain_virt(struct acomp_req_chain *state, int err) +{ + struct acomp_req *req = state->cur; + unsigned int slen = req->slen; + unsigned int dlen = req->dlen; + + req->base.err = err; + if (!state->src) + return; + + acomp_request_set_virt(req, state->src, state->dst, slen, dlen); + state->src = NULL; +} + +static int acomp_reqchain_finish(struct acomp_req_chain *state, + int err, u32 mask) +{ + struct acomp_req *req0 = state->req0; + struct acomp_req *req = state->cur; + struct acomp_req *n; + + acomp_reqchain_virt(state, err); + + if (req != req0) + list_add_tail(&req->base.list, &req0->base.list); + + list_for_each_entry_safe(req, n, &state->head, base.list) { + list_del_init(&req->base.list); + + req->base.flags &= mask; + req->base.complete = acomp_reqchain_done; + req->base.data = state; + state->cur = req; + + if (acomp_request_isvirt(req)) { + unsigned int slen = req->slen; + unsigned int dlen = req->dlen; + const u8 *svirt = req->svirt; + u8 *dvirt = req->dvirt; + + state->src = svirt; + state->dst = dvirt; + + sg_init_one(&state->ssg, svirt, slen); + sg_init_one(&state->dsg, dvirt, dlen); + + acomp_request_set_params(req, &state->ssg, &state->dsg, + slen, dlen); + } + + err = state->op(req); + + if (err == -EINPROGRESS) { + if (!list_empty(&state->head)) + err = -EBUSY; + goto out; + } + + if (err == -EBUSY) + goto out; + + acomp_reqchain_virt(state, err); + list_add_tail(&req->base.list, &req0->base.list); + } + + acomp_restore_req(state); + +out: + return err; +} + +static void acomp_reqchain_done(void *data, int err) +{ + struct acomp_req_chain *state = data; + crypto_completion_t compl = state->compl; + + data = state->data; + + if (err == -EINPROGRESS) { + if (!list_empty(&state->head)) + return; + goto notify; + } + + err = acomp_reqchain_finish(state, err, CRYPTO_TFM_REQ_MAY_BACKLOG); + if (err == -EBUSY) + return; + +notify: + compl(data, err); +} + +static int acomp_do_req_chain(struct acomp_req *req, + int (*op)(struct acomp_req *req)) +{ + struct crypto_acomp *tfm = crypto_acomp_reqtfm(req); + struct acomp_req_chain *state = &req->chain; + int err; + + if (crypto_acomp_req_chain(tfm) || + (!acomp_request_chained(req) && !acomp_request_isvirt(req))) + return op(req); + + /* + * There are no in-kernel users that do this. If and ever + * such users come into being then we could add a fall-back + * path. + */ + if (acomp_request_has_nondma(req)) + return -EINVAL; + + if (acomp_is_async(tfm)) { + acomp_save_req(req, acomp_reqchain_done); + state = req->base.data; + } + + state->op = op; + state->cur = req; + state->src = NULL; + INIT_LIST_HEAD(&state->head); + list_splice_init(&req->base.list, &state->head); + + if (acomp_request_isvirt(req)) { + unsigned int slen = req->slen; + unsigned int dlen = req->dlen; + const u8 *svirt = req->svirt; + u8 *dvirt = req->dvirt; + + state->src = svirt; + state->dst = dvirt; + + sg_init_one(&state->ssg, svirt, slen); + sg_init_one(&state->dsg, dvirt, dlen); + + acomp_request_set_params(req, &state->ssg, &state->dsg, + slen, dlen); + } + + err = op(req); + if (err == -EBUSY || err == -EINPROGRESS) + return -EBUSY; + + return acomp_reqchain_finish(state, err, ~0); +} + +int crypto_acomp_compress(struct acomp_req *req) +{ + return acomp_do_req_chain(req, crypto_acomp_reqtfm(req)->compress); +} +EXPORT_SYMBOL_GPL(crypto_acomp_compress); + +int crypto_acomp_decompress(struct acomp_req *req) +{ + return acomp_do_req_chain(req, crypto_acomp_reqtfm(req)->decompress); +} +EXPORT_SYMBOL_GPL(crypto_acomp_decompress); + void comp_prepare_alg(struct comp_alg_common *alg) { struct crypto_alg *base = &alg->base; diff --git a/include/crypto/acompress.h b/include/crypto/acompress.h index b6d5136e689d..15bb13e47f8b 100644 --- a/include/crypto/acompress.h +++ b/include/crypto/acompress.h @@ -12,10 +12,34 @@ #include #include #include +#include +#include #define CRYPTO_ACOMP_ALLOC_OUTPUT 0x00000001 + +/* Set this bit for virtual address instead of SG list. */ +#define CRYPTO_ACOMP_REQ_VIRT 0x00000002 + +/* Set this bit for if virtual address buffer cannot be used for DMA. */ +#define CRYPTO_ACOMP_REQ_NONDMA 0x00000004 + #define CRYPTO_ACOMP_DST_MAX 131072 +struct acomp_req; + +struct acomp_req_chain { + struct list_head head; + struct acomp_req *req0; + struct acomp_req *cur; + int (*op)(struct acomp_req *req); + crypto_completion_t compl; + void *data; + struct scatterlist ssg; + struct scatterlist dsg; + const u8 *src; + u8 *dst; +}; + /** * struct acomp_req - asynchronous (de)compression request * @@ -24,14 +48,24 @@ * @dst: Destination data * @slen: Size of the input buffer * @dlen: Size of the output buffer and number of bytes produced + * @chain: Private API code data, do not use * @__ctx: Start of private context data */ struct acomp_req { struct crypto_async_request base; - struct scatterlist *src; - struct scatterlist *dst; + union { + struct scatterlist *src; + const u8 *svirt; + }; + union { + struct scatterlist *dst; + u8 *dvirt; + }; unsigned int slen; unsigned int dlen; + + struct acomp_req_chain chain; + void *__ctx[] CRYPTO_MINALIGN_ATTR; }; @@ -200,10 +234,14 @@ static inline void acomp_request_set_callback(struct acomp_req *req, crypto_completion_t cmpl, void *data) { + u32 keep = CRYPTO_ACOMP_ALLOC_OUTPUT | CRYPTO_ACOMP_REQ_VIRT; + req->base.complete = cmpl; req->base.data = data; - req->base.flags &= CRYPTO_ACOMP_ALLOC_OUTPUT; - req->base.flags |= flgs & ~CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags &= keep; + req->base.flags |= flgs & ~keep; + + crypto_reqchain_init(&req->base); } /** @@ -230,11 +268,42 @@ static inline void acomp_request_set_params(struct acomp_req *req, req->slen = slen; req->dlen = dlen; - req->base.flags &= ~CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags &= ~(CRYPTO_ACOMP_ALLOC_OUTPUT | CRYPTO_ACOMP_REQ_VIRT); if (!req->dst) req->base.flags |= CRYPTO_ACOMP_ALLOC_OUTPUT; } +/** + * acomp_request_set_virt() -- Sets virtual address request parameters + * + * Sets virtual address parameters required by an acomp operation + * + * @req: asynchronous compress request + * @src: virtual address pointer to input buffer + * @dst: virtual address pointer to output buffer. + * @slen: size of the input buffer + * @dlen: size of the output buffer. + */ +static inline void acomp_request_set_virt(struct acomp_req *req, + const u8 *src, u8 *dst, + unsigned int slen, + unsigned int dlen) +{ + req->svirt = src; + req->dvirt = dst; + req->slen = slen; + req->dlen = dlen; + + req->base.flags &= ~CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags |= CRYPTO_ACOMP_REQ_VIRT; +} + +static inline void acomp_request_chain(struct acomp_req *req, + struct acomp_req *head) +{ + crypto_request_chain(&req->base, &head->base); +} + /** * crypto_acomp_compress() -- Invoke asynchronous compress operation * @@ -244,10 +313,7 @@ static inline void acomp_request_set_params(struct acomp_req *req, * * Return: zero on success; error code in case of error */ -static inline int crypto_acomp_compress(struct acomp_req *req) -{ - return crypto_acomp_reqtfm(req)->compress(req); -} +int crypto_acomp_compress(struct acomp_req *req); /** * crypto_acomp_decompress() -- Invoke asynchronous decompress operation @@ -258,9 +324,6 @@ static inline int crypto_acomp_compress(struct acomp_req *req) * * Return: zero on success; error code in case of error */ -static inline int crypto_acomp_decompress(struct acomp_req *req) -{ - return crypto_acomp_reqtfm(req)->decompress(req); -} +int crypto_acomp_decompress(struct acomp_req *req); #endif diff --git a/include/crypto/internal/acompress.h b/include/crypto/internal/acompress.h index 8831edaafc05..b3b48dea7f2f 100644 --- a/include/crypto/internal/acompress.h +++ b/include/crypto/internal/acompress.h @@ -109,4 +109,26 @@ void crypto_unregister_acomp(struct acomp_alg *alg); int crypto_register_acomps(struct acomp_alg *algs, int count); void crypto_unregister_acomps(struct acomp_alg *algs, int count); +static inline bool acomp_request_chained(struct acomp_req *req) +{ + return crypto_request_chained(&req->base); +} + +static inline bool acomp_request_isvirt(struct acomp_req *req) +{ + return req->base.flags & CRYPTO_ACOMP_REQ_VIRT; +} + +static inline bool acomp_request_isnondma(struct acomp_req *req) +{ + return (req->base.flags & + (CRYPTO_ACOMP_REQ_NONDMA | CRYPTO_ACOMP_REQ_VIRT)) == + (CRYPTO_ACOMP_REQ_NONDMA | CRYPTO_ACOMP_REQ_VIRT); +} + +static inline bool crypto_acomp_req_chain(struct crypto_acomp *tfm) +{ + return crypto_tfm_req_chain(&tfm->base); +} + #endif From patchwork Thu Feb 27 10:15:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994054 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89634C021BE for ; Thu, 27 Feb 2025 10:15:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 40DDE280007; Thu, 27 Feb 2025 05:15:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 37157280004; Thu, 27 Feb 2025 05:15:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 17517280007; Thu, 27 Feb 2025 05:15:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id EA153280004 for ; Thu, 27 Feb 2025 05:15:08 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A858F140E59 for ; Thu, 27 Feb 2025 10:15:08 +0000 (UTC) X-FDA: 83165316696.26.FE04E83 Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf26.hostedemail.com (Postfix) with ESMTP id D8AD2140035 for ; Thu, 27 Feb 2025 10:15:06 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=CuQEqmsn; spf=pass (imf26.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651307; a=rsa-sha256; cv=none; b=VTWXpcZAKlVoFjJdN0TUSAKaJWDPmSVfxt46JTkHVLbCG6YWdyvSpMxq4XIVVXUj/MV6dT ki2nnyJfdylo94PqpU22+cdzbGRkAkn1MhUzqdzb0PvfYQammpeTNZiWJrIg7cDZKp5nPM XqXhyLn3VXpvhRRrOxdEImZhupk+Wd4= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=CuQEqmsn; spf=pass (imf26.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651307; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=eTZx4aOK1a37IAWLFenpLkzeTZn5evzAew323HFadZI=; b=2LvQWFSK2tth5WWwcCZkGRxZeRlTSm/U9pPn8dzBkozQLjmG15nbaxsioy7S6O6zDohbNW /yIp0TzPhHfz2iZKMUnb3KN3KCWGyyHfzLtQTC7R+9wdC/ZBGl8/7YsKg+pifwcy3/bYgo gbC7lV5X7nTkM1FU8dzrfcRwYzUq75k= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=eTZx4aOK1a37IAWLFenpLkzeTZn5evzAew323HFadZI=; b=CuQEqmsnkuc2JLWqfOjQvMkmSi PKsSsKJuY0aStLGHnxot+doJM/VWEB18j3vFwS3Am77HGIsIWjuGGM+N/bgGO+eXDjl9BIfCo1eow FiCWm4gEy68ZuCSVm7AiV6aNWGG9EtE1XRV4IQFLq+4hzYAtyHeFT6F1UOMxIKSUy+IosclLco2uY d0VOIxD6JvS71pBGMFmqUrQnMZFq86Q4Lmvd2PnUa4T/AZW5fy/yEsBNKvvYdwB1zNW8aJjNQBVaA r7qYFwW6K2oAGboHiG3jytM5e9u7eL1EsLmmQ0Ju13N5Xdzx6IcYrHkQwTMe7UBg3+1tDXebT9Zb2 fBRNCPzQ==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnav0-002DrC-20; Thu, 27 Feb 2025 18:15:03 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:15:02 +0800 Date: Thu, 27 Feb 2025 18:15:02 +0800 Message-Id: <51aac11d47b2fd86166208342c2ef544ed6f7ae6.1740651138.git.herbert@gondor.apana.org.au> In-Reply-To: References: From: Herbert Xu Subject: [PATCH 4/7] crypto: testmgr - Remove NULL dst acomp tests To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Stat-Signature: newz11jqwkuehkhhzbgpdi3xu8mtm49g X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: D8AD2140035 X-Rspam-User: X-HE-Tag: 1740651306-928634 X-HE-Meta: U2FsdGVkX18YeFATlEvPtEo0ylDZaD4XqR9lBs8xloyRqDKqCeY5twWaW0nxWfnMBFyAIhxos+vehkvtG+q9NLGLJjLkhbFItisTt8mbD3IB4gKsq7tN3ay1TcF0xXwkrpdx4ZTkPCf3JFkx5hzH2YGcFNTRWHyK0Isc7jgTg/+KrRwDcpyf4fh43Gaq+XBm52/5sPil2aj1QlqdJughZSnYVKmIfXLVAxU++FI5t43ZEsibDZu44cEiVSBA1/YVcu45zPVZqAOkEwIdU92oTBSr60FOACIIqoyrjgr4RApq5OPb5zuyohy5GjJiZzB3vmEDA3j5hinhgLjquW+tCERQDwrzDxcgVs+lPksn73yT6NkVezU+O3a8xKx0jphwhfLvPj7izgodT3Doimakbs2Af+e6ZTcveT+32XHq0C+5PiZZ+YnSTJtxNcAZ8rCjjNnhTOgqbA1YI+0eipJTiCnKP54oD71NPQRWmXKBRZiQGlzsvafzzT+hz3SaNRVuTxo5gzBBiFYi3jCr2Q8ngl6qoxIz5unNtVUUKCAYFkYyODkf8x3sYvUyrKiycEpY4c2qqimbWpfaZKSqj5qRWowpa0cZIxfQWObSaLsQIUGv0lzmBNKi02O8dXqUaENQxinXeiRBLIw81+tbwn3HJx0EhdO2Tp1N8eEJBsuCF33hdH8nK3OXZwKNa/JjA8CPYDjICAzbDfh6bVLIBYgNvlX5ukoHXAiTgRY4xfgn0WYZz9hkXIfqJF6FcEh4i1HQkl1BGRXPFB3S3eTEzYvkSswBwiszv2l4zPiMeWw0xIeFi3CfwLIs84QDnM0U33NWHSh79Z1skXkavn32x8ZH860vijVKV5keGY5FjBPGcPIFjrzl7hv2yuenx/y+fwLrOSgAQbvCKJglprrX5ztdwdqbDCB35scUZh1MYWT7FS9JA/E3HlBlgJIp3QbzAhTkfsVwUa2fxZysDjlEH0H 6CGlG1NF W3dp2Sn5T+1BlhFtOxGb2/03rpTqHgp/sRPcwOumhK1qAFm330INr4oXf4zO6RLZx+aiD2y8ewF8tTiBWMf1T9Bst4eSpwlHMi7Mi4DkInGuz7fD0pasOIgQQnrYqWjc0LMJs7Y/ahN1rh8SWiLzGSCFBywXkljaGnkDxS31NlYw7FsThNV8vkuns3T8AF8enQS5tievGpSUbbOulKSP+Drycow== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: In preparation for the partial removal of NULL dst acomp support, remove the tests for them. Signed-off-by: Herbert Xu --- crypto/testmgr.c | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/crypto/testmgr.c b/crypto/testmgr.c index b69877db3f33..95b973a391cc 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -3522,21 +3522,6 @@ static int test_acomp(struct crypto_acomp *tfm, goto out; } -#ifdef CONFIG_CRYPTO_MANAGER_EXTRA_TESTS - crypto_init_wait(&wait); - sg_init_one(&src, input_vec, ilen); - acomp_request_set_params(req, &src, NULL, ilen, 0); - - ret = crypto_wait_req(crypto_acomp_compress(req), &wait); - if (ret) { - pr_err("alg: acomp: compression failed on NULL dst buffer test %d for %s: ret=%d\n", - i + 1, algo, -ret); - kfree(input_vec); - acomp_request_free(req); - goto out; - } -#endif - kfree(input_vec); acomp_request_free(req); } @@ -3598,20 +3583,6 @@ static int test_acomp(struct crypto_acomp *tfm, goto out; } -#ifdef CONFIG_CRYPTO_MANAGER_EXTRA_TESTS - crypto_init_wait(&wait); - acomp_request_set_params(req, &src, NULL, ilen, 0); - - ret = crypto_wait_req(crypto_acomp_decompress(req), &wait); - if (ret) { - pr_err("alg: acomp: decompression failed on NULL dst buffer test %d for %s: ret=%d\n", - i + 1, algo, -ret); - kfree(input_vec); - acomp_request_free(req); - goto out; - } -#endif - kfree(input_vec); acomp_request_free(req); } From patchwork Thu Feb 27 10:15:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994055 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E856C021BE for ; Thu, 27 Feb 2025 10:15:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DACE1280009; Thu, 27 Feb 2025 05:15:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D3565280008; Thu, 27 Feb 2025 05:15:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B604F280009; Thu, 27 Feb 2025 05:15:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 87A64280004 for ; Thu, 27 Feb 2025 05:15:13 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0FF07509E4 for ; Thu, 27 Feb 2025 10:15:13 +0000 (UTC) X-FDA: 83165316906.18.4978C59 Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf01.hostedemail.com (Postfix) with ESMTP id DAC3440036 for ; Thu, 27 Feb 2025 10:15:10 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=c95stfs5; spf=pass (imf01.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651311; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=eSOj7vOfSpGgQ5Kj0GYCHDDmdqiWsm4T+x7O3x8fxBs=; b=gUNorhjqUhffD1ZGTG1avaUIldyJtzEnXQyGW+h4iGJ4/JmCV6OSewm0V+2LprHYmJjcd7 7AnfRzU0UVGJwXO8zrorJA7QB5R7ynIEm5Sxo+q6sFjXaSRlCBr//++VK5vE9v7ePAzma7 2jIc4XWfhvwTXU3aT3jQH7vV3qzIS9I= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=c95stfs5; spf=pass (imf01.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651311; a=rsa-sha256; cv=none; b=IUDWEXbykuNRlrGg+DrXBWqJ2yoj55rYRrcysO8q18D2gLG2sAYtB7Ah/PiGs6LKH4iB4U EAHZpGNehvtz1mg3sdfKRToXBAZJg8hveNK4pAbPMWIYOslGbDSyi9umtuTt/TF6YF0h0M Jmytc3Bceg47jvXnDiWxjMeiY9jQ58M= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=eSOj7vOfSpGgQ5Kj0GYCHDDmdqiWsm4T+x7O3x8fxBs=; b=c95stfs5HmYKPE0pSQB1u/9+9m eNW8XoG3ZufiFA7486HXkW4q8y/NUBHBIHlLfx7JgpoMia3q17JBW0B8zduZl6+gqJwBSrbjk1JXr gtSlDfbKeWvMGaBR8n7C4AXW/vWGALoo1blWXp3//n25MgO4sO8gFqzdYrCH+Iet1+5hXEUX1jM3V v8yaRWJkBCuQXqAtY6D8w24/K758HJt5Lg14VaVLcQUNFFne2OuUcU3GMw3zd9Eiaem2pYtz1f79Z kpWVvYJv739ZaF/rvfdg98nhdMNB+N9kPZGpqOU5z4TPgFjm95b0m1jEAEkqPhz4+148LySIH+4s3 NYkRMvFw==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnav2-002DrQ-2q; Thu, 27 Feb 2025 18:15:05 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:15:04 +0800 Date: Thu, 27 Feb 2025 18:15:04 +0800 Message-Id: <30f87ea9a3738c57287f9099a9e638781fa212c5.1740651138.git.herbert@gondor.apana.org.au> In-Reply-To: References: From: Herbert Xu Subject: [PATCH 5/7] crypto: scomp - Remove support for non-trivial SG lists To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: DAC3440036 X-Stat-Signature: h3afuzsfx64juzo5gbqff7crohta33bo X-HE-Tag: 1740651310-828058 X-HE-Meta: U2FsdGVkX18EIktFTAGmhn0Q80FSxVPS//BC+Dkj43y75e8AeZIOwLt/CMtBy85kL6faUVn9m+fsEJnDLAXsms/bwpvz68lErVVTv/2oCIY441m/gCFtU2KmwXoRDZI02uZLNasIfOsFIyztYXR4kn4hkDLdmsplTKVFbUZiwuBZiG1cFFA4+k0v5Ke4pckoL7W2yJwCejMJQgRE1l6wRuorS7LkbEo48+3R5qaSo/lPHXtj9xkiWLHKeK2LKbaq/Td6TpyJdHocBhnEWWT3v43PBUohJ/gI9Hx9rep3mBt97fNFvlyDqhXWEfi1x1n2hEv6ikDL9yBz0iDGEgeNINxE59040qRaVpCud+5EH+BmDdLQErLXTkzVd4JsgdhqaT1DkzyS+TtyzAalDJLk8e0jxalADxO65g19eIUr/kKaRwuTtLEhNyH82jsHuX2bGrplasklQCF1bzOpLv4JyCpa37fie6MBjLqUYrJQt9vuM9HdjlIwFSooccRLplfszncuH2rmn5s7b+vo8W4oY1ww4GEY0q8LacFo4GXmp4j83tJ0kv/Oq/7ZGqqlVVKtmkz6sQrg8mATFC+fx90rEvq7LpMTSr0NHGzjtlz0AiUi2jrGpWzjwC6zVxjN5ZryqaszUgu5e0lhDTL3sYtvetLSWxUpHxzZE/laCHBILu9absDSQ/WFCUlWYThMwDLzShoGaFqhr6FOtKNWXr4h0hH98GSa5DG/JOSjaYzgEk+6gdDOUkprIYTy/iRwkrVY4ahO+/Qi+Vvs2gZ4QO17VddCBdmr/+zL43a5QHJ79D21LGLd/1SryN75kivInFawvusVc5+5lEBXevbdP06Gs+rPDLew7u06XQOLivvwRh/swd35L/q1PnP3jAm565yfCBiqsJW3vJqPJXeoIlYN7N5R6RLYFO0gP4uxwfpDNpQxrdi8+kOk+UIDB/sr6BRbWdEXIEKnUqQBHS5/+fW 4hgyg+W6 pkx6RErkIClgzT+w6CpCSaw0GiWeh8Fl93sCsiGSgk14G/s01mpWyAYp+Pv7MVLmosRGkHCDaI9688EsNT9kfTempVMVub0ZLpT6M/dlHx+KXUhFNnXARZeonkrH52igsvy14vWD6euS510OJb4sElY8uQvzgo9qGKbm6mRf34QwEoRdu0NnsrRfc+mN17ZyzwmXnwsr7WYEm8ikq1KCAua9/wg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: As the only user of scomp uses a trivial single-page SG list, remove support for everything else in preprataion for a shift to virtual addresses. Signed-off-by: Herbert Xu --- crypto/acompress.c | 6 -- crypto/scompress.c | 139 +++++----------------------- include/crypto/acompress.h | 12 +-- include/crypto/internal/scompress.h | 2 - 4 files changed, 27 insertions(+), 132 deletions(-) diff --git a/crypto/acompress.c b/crypto/acompress.c index d2103d4e42cc..8914d0c4cc75 100644 --- a/crypto/acompress.c +++ b/crypto/acompress.c @@ -73,7 +73,6 @@ static int crypto_acomp_init_tfm(struct crypto_tfm *tfm) acomp->compress = alg->compress; acomp->decompress = alg->decompress; - acomp->dst_free = alg->dst_free; acomp->reqsize = alg->reqsize; if (alg->exit) @@ -146,11 +145,6 @@ void acomp_request_free(struct acomp_req *req) if (tfm->__crt_alg->cra_type != &crypto_acomp_type) crypto_acomp_scomp_free_ctx(req); - if (req->base.flags & CRYPTO_ACOMP_ALLOC_OUTPUT) { - acomp->dst_free(req->dst); - req->dst = NULL; - } - __acomp_request_free(req); } EXPORT_SYMBOL_GPL(acomp_request_free); diff --git a/crypto/scompress.c b/crypto/scompress.c index 1cef6bb06a81..ffc8e7f4862c 100644 --- a/crypto/scompress.c +++ b/crypto/scompress.c @@ -18,24 +18,11 @@ #include #include #include -#include #include #include "compress.h" -struct scomp_scratch { - spinlock_t lock; - void *src; - void *dst; -}; - -static DEFINE_PER_CPU(struct scomp_scratch, scomp_scratch) = { - .lock = __SPIN_LOCK_UNLOCKED(scomp_scratch.lock), -}; - static const struct crypto_type crypto_scomp_type; -static int scomp_scratch_users; -static DEFINE_MUTEX(scomp_lock); static int __maybe_unused crypto_scomp_report( struct sk_buff *skb, struct crypto_alg *alg) @@ -58,127 +45,57 @@ static void crypto_scomp_show(struct seq_file *m, struct crypto_alg *alg) seq_puts(m, "type : scomp\n"); } -static void crypto_scomp_free_scratches(void) -{ - struct scomp_scratch *scratch; - int i; - - for_each_possible_cpu(i) { - scratch = per_cpu_ptr(&scomp_scratch, i); - - vfree(scratch->src); - vfree(scratch->dst); - scratch->src = NULL; - scratch->dst = NULL; - } -} - -static int crypto_scomp_alloc_scratches(void) -{ - struct scomp_scratch *scratch; - int i; - - for_each_possible_cpu(i) { - void *mem; - - scratch = per_cpu_ptr(&scomp_scratch, i); - - mem = vmalloc_node(SCOMP_SCRATCH_SIZE, cpu_to_node(i)); - if (!mem) - goto error; - scratch->src = mem; - mem = vmalloc_node(SCOMP_SCRATCH_SIZE, cpu_to_node(i)); - if (!mem) - goto error; - scratch->dst = mem; - } - return 0; -error: - crypto_scomp_free_scratches(); - return -ENOMEM; -} - static int crypto_scomp_init_tfm(struct crypto_tfm *tfm) { - int ret = 0; - - mutex_lock(&scomp_lock); - if (!scomp_scratch_users++) - ret = crypto_scomp_alloc_scratches(); - mutex_unlock(&scomp_lock); - - return ret; + return 0; } static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) { struct crypto_acomp *tfm = crypto_acomp_reqtfm(req); - void **tfm_ctx = acomp_tfm_ctx(tfm); + struct crypto_scomp **tfm_ctx = acomp_tfm_ctx(tfm); struct crypto_scomp *scomp = *tfm_ctx; void **ctx = acomp_request_ctx(req); - struct scomp_scratch *scratch; + unsigned int slen = req->slen; + unsigned int dlen = req->dlen; void *src, *dst; - unsigned int dlen; int ret; - if (!req->src || !req->slen || req->slen > SCOMP_SCRATCH_SIZE) + if (!req->src || !slen) return -EINVAL; - if (req->dst && !req->dlen) + if (req->dst && !dlen) return -EINVAL; - if (!req->dlen || req->dlen > SCOMP_SCRATCH_SIZE) - req->dlen = SCOMP_SCRATCH_SIZE; + if (!req->dst || !dlen) + return -ENOSYS; - dlen = req->dlen; + if (sg_nents(req->src) > 1 || req->src->offset + slen > PAGE_SIZE) + return -ENOSYS; - scratch = raw_cpu_ptr(&scomp_scratch); - spin_lock(&scratch->lock); + if (sg_nents(req->dst) > 1) + return -ENOSYS; - if (sg_nents(req->src) == 1 && !PageHighMem(sg_page(req->src))) { - src = page_to_virt(sg_page(req->src)) + req->src->offset; - } else { - scatterwalk_map_and_copy(scratch->src, req->src, 0, - req->slen, 0); - src = scratch->src; - } + if (req->dst->offset >= PAGE_SIZE) + return -ENOSYS; - if (req->dst && sg_nents(req->dst) == 1 && !PageHighMem(sg_page(req->dst))) - dst = page_to_virt(sg_page(req->dst)) + req->dst->offset; - else - dst = scratch->dst; + if (req->dst->offset + dlen > PAGE_SIZE) + dlen = PAGE_SIZE - req->dst->offset; + + src = kmap_local_page(sg_page(req->src)) + req->src->offset; + dst = kmap_local_page(sg_page(req->dst)) + req->dst->offset; if (dir) - ret = crypto_scomp_compress(scomp, src, req->slen, + ret = crypto_scomp_compress(scomp, src, slen, dst, &req->dlen, *ctx); else - ret = crypto_scomp_decompress(scomp, src, req->slen, + ret = crypto_scomp_decompress(scomp, src, slen, dst, &req->dlen, *ctx); - if (!ret) { - if (!req->dst) { - req->dst = sgl_alloc(req->dlen, GFP_ATOMIC, NULL); - if (!req->dst) { - ret = -ENOMEM; - goto out; - } - } else if (req->dlen > dlen) { - ret = -ENOSPC; - goto out; - } - if (dst == scratch->dst) { - scatterwalk_map_and_copy(scratch->dst, req->dst, 0, - req->dlen, 1); - } else { - int nr_pages = DIV_ROUND_UP(req->dst->offset + req->dlen, PAGE_SIZE); - int i; - struct page *dst_page = sg_page(req->dst); - for (i = 0; i < nr_pages; i++) - flush_dcache_page(dst_page + i); - } - } -out: - spin_unlock(&scratch->lock); + kunmap_local(src); + kunmap_local(dst); + flush_dcache_page(sg_page(req->dst)); + return ret; } @@ -197,11 +114,6 @@ static void crypto_exit_scomp_ops_async(struct crypto_tfm *tfm) struct crypto_scomp **ctx = crypto_tfm_ctx(tfm); crypto_free_scomp(*ctx); - - mutex_lock(&scomp_lock); - if (!--scomp_scratch_users) - crypto_scomp_free_scratches(); - mutex_unlock(&scomp_lock); } int crypto_init_scomp_ops_async(struct crypto_tfm *tfm) @@ -225,7 +137,6 @@ int crypto_init_scomp_ops_async(struct crypto_tfm *tfm) crt->compress = scomp_acomp_compress; crt->decompress = scomp_acomp_decompress; - crt->dst_free = sgl_free; crt->reqsize = sizeof(void *); return 0; diff --git a/include/crypto/acompress.h b/include/crypto/acompress.h index 15bb13e47f8b..25e193b0b8b4 100644 --- a/include/crypto/acompress.h +++ b/include/crypto/acompress.h @@ -15,8 +15,6 @@ #include #include -#define CRYPTO_ACOMP_ALLOC_OUTPUT 0x00000001 - /* Set this bit for virtual address instead of SG list. */ #define CRYPTO_ACOMP_REQ_VIRT 0x00000002 @@ -75,15 +73,12 @@ struct acomp_req { * * @compress: Function performs a compress operation * @decompress: Function performs a de-compress operation - * @dst_free: Frees destination buffer if allocated inside the - * algorithm * @reqsize: Context size for (de)compression requests * @base: Common crypto API algorithm data structure */ struct crypto_acomp { int (*compress)(struct acomp_req *req); int (*decompress)(struct acomp_req *req); - void (*dst_free)(struct scatterlist *dst); unsigned int reqsize; struct crypto_tfm base; }; @@ -234,7 +229,7 @@ static inline void acomp_request_set_callback(struct acomp_req *req, crypto_completion_t cmpl, void *data) { - u32 keep = CRYPTO_ACOMP_ALLOC_OUTPUT | CRYPTO_ACOMP_REQ_VIRT; + u32 keep = CRYPTO_ACOMP_REQ_VIRT; req->base.complete = cmpl; req->base.data = data; @@ -268,9 +263,7 @@ static inline void acomp_request_set_params(struct acomp_req *req, req->slen = slen; req->dlen = dlen; - req->base.flags &= ~(CRYPTO_ACOMP_ALLOC_OUTPUT | CRYPTO_ACOMP_REQ_VIRT); - if (!req->dst) - req->base.flags |= CRYPTO_ACOMP_ALLOC_OUTPUT; + req->base.flags &= ~CRYPTO_ACOMP_REQ_VIRT; } /** @@ -294,7 +287,6 @@ static inline void acomp_request_set_virt(struct acomp_req *req, req->slen = slen; req->dlen = dlen; - req->base.flags &= ~CRYPTO_ACOMP_ALLOC_OUTPUT; req->base.flags |= CRYPTO_ACOMP_REQ_VIRT; } diff --git a/include/crypto/internal/scompress.h b/include/crypto/internal/scompress.h index 07a10fd2d321..25c5f8126618 100644 --- a/include/crypto/internal/scompress.h +++ b/include/crypto/internal/scompress.h @@ -12,8 +12,6 @@ #include #include -#define SCOMP_SCRATCH_SIZE 131072 - struct acomp_req; struct crypto_scomp { From patchwork Thu Feb 27 10:15:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994056 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6875C19F2E for ; Thu, 27 Feb 2025 10:15:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 071FF280004; Thu, 27 Feb 2025 05:15:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F37C428000A; Thu, 27 Feb 2025 05:15:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C2550280004; Thu, 27 Feb 2025 05:15:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 9E5D5280008 for ; Thu, 27 Feb 2025 05:15:13 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 47BC7A07D1 for ; Thu, 27 Feb 2025 10:15:13 +0000 (UTC) X-FDA: 83165316906.17.267EB83 Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf11.hostedemail.com (Postfix) with ESMTP id 7BCD940052 for ; Thu, 27 Feb 2025 10:15:11 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=iAONUVb0; spf=pass (imf11.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651311; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=ilEUmOuJANO5dYUHK6+31dmZkztFgxSS5iQ9gGn3/Q8=; b=ke3V91IGjtf9TP/LZe0nyJJNmQH35W+7nbP8Yz6k3d7paGZEhrA62wdCCeGctWh7dOfU6y bSlUM/4/UbyKNgyhSYf3v8PW6agT19FzC+hNoh4TEIiVqhGIdDh4jnH77qv2Htd0s4aiD5 46h3OjfeVY470YExnyw9ERGKL1rB9po= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=iAONUVb0; spf=pass (imf11.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651311; a=rsa-sha256; cv=none; b=YfALJvMGRhUi7Y1fjedClndu5/62ItAd3URLEXJ+larYSdMEpWIV08WCNvfuPUMuZj5GK9 F8mGyY0TMP63qu9hFhysoWEfIzF9oRGJdqRE4LyWQYH9DkmO3AdWuw4H5o5aRjJ9PNxS+e sVuthXWSJ7LHoxiOrXW4BWrVYxfFUVs= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ilEUmOuJANO5dYUHK6+31dmZkztFgxSS5iQ9gGn3/Q8=; b=iAONUVb0h3CbuPNKOX0ujTia2G YLBdZRAGx1POwTLzZCEAW3gweMXf3M6/GT8nzhYlrV1aFlDelzPMYcoRHpupZByvwSN7O3BkA/gDa 8EtkM5M5IRIWjQcW/KO1fx2dg6gBCsrwbJRUyOarfnCdJraHq7jghYoceHbFwLhOLtLFGlL86w3Q3 ysRx4etPOnaO1CAzOrwVW+q7WWYD6rmxiOtDnr4uJiPHywXT8Vhlph1wBziPsNakoha0zw75mcmo2 XsNUwHHcyCVnQ9MwxrZThD1lg76JUz0UgZzu1Gv3LrCZMHqysCrXadKJadAzm2/hbeQ3+tnXOkFhO 6RD1NXkw==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnav5-002Drd-0Y; Thu, 27 Feb 2025 18:15:08 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:15:07 +0800 Date: Thu, 27 Feb 2025 18:15:07 +0800 Message-Id: In-Reply-To: References: From: Herbert Xu Subject: [PATCH 6/7] crypto: scomp - Add chaining and virtual address support To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 7BCD940052 X-Stat-Signature: 17zeyjcb3xgiuoyr3r6cj5opd7m8cyp7 X-Rspam-User: X-HE-Tag: 1740651310-558118 X-HE-Meta: U2FsdGVkX189hEgDmGm5UQGDShuRvsxFSnXY2KRpwI3hZSNw5d1z7UOHFydmU+3LQeTqdRHKuj5+9w/uPglMTcRlkVlE2vzrZoPvGWz1hFO3bRZuHdvzbOzDFztJJRE0B5+wqdbrWoscx7ZFtlWN9C+NRjj0eYTvHFvxCOZ6ksj79DSfqIRzTZIvvWpUDyp8sdIT187edTjlsJTzOWnsF/RVBbRnsIaEri6PMBJd1DMHgpe4kcV1mdpxSiHU+8n8fwxJHLIEd1idwg9p3ucfNgqHbBvJ6qqj0JOI9F49QLra+G+4h7iyuDFb6Fv2/Fna+SjwmQqxda65MEnpnW4OLQfbbycsb9lgXy+HqbIdze0MBpIB/1nz4E7DoUyWTLmxMnme3N7RsDpz+MXkflTgBW5mkvZNSjeAw8L0ty2YRrzXiFQuRgFD3m4y0IBcZBSJ4aTRLnB0EuLuOelT0ek09ca7xEAVsmYhX+9PqNlrCmiuhr8hyeb78wVvPkQ+wV6Qs5Vq4NASU2lmmNZOLu4ugOLWKNlKMg+hkY69rOJdWnLnnsBSNQbKxSoOfEuixRS6yRT+shBdAY7m3SFfuIoIVitEfVTDnPUdwOsIfga7SMH/b25KQDd0LuxMck+1zpwL0Ou2T0yFa/s/cFZ52fcanXv+jC/G0ClP84YF3AhfE4RXBjMDYpz0C/kdArqtCODhssluFSHFNYOa6+2OE+YwCi9wZ76NjKuSNoXi5PVilhsBQXkvFdX+4u/zQLr7Yrcc/3trDZDbriwd78zVfb0n7DHqdBLSVElmBT4tGx7zeQ7NKg1MM3QSm2Ut+2NKAY5vpHCc1B8AXHu860yEVe715Q+W06YJQAOsYgjhhg3HOdFq53vGK6R4Zra09xJVFom4iiF4B2ic7kA0sbYGj2ShTtYsc2ZyQjG8BWlxqWd3A3+aCn1lgZc8P61msDUoQ6fCwewO6jQmxksxXZI/V3v p2agtxoG vvYCsSamLEiRzUz2rMWgrLBWe5aYCUtbyYP8+4AxTw7HlN/v1O9E8KpYBS5XUMSI4sSe5lHkNWtRgzKXYwrF0kZUpLCV1SjYAN++eCG2R+V4dhhBbUWEV1sUyLUhbAYIL+lTsSCTiXImIooBL3Rb3bQeozyAImcgbfN0w08/Exy3W3GecwOMVkKR8n0zu21FfCDYVEhIExmI5i8hw156UbqCgmQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add chaining and virtual address support to all scomp algorithms. Signed-off-by: Herbert Xu --- crypto/scompress.c | 62 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/crypto/scompress.c b/crypto/scompress.c index ffc8e7f4862c..e94ea9c1685b 100644 --- a/crypto/scompress.c +++ b/crypto/scompress.c @@ -58,7 +58,8 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) void **ctx = acomp_request_ctx(req); unsigned int slen = req->slen; unsigned int dlen = req->dlen; - void *src, *dst; + const u8 *src; + u8 *dst; int ret; if (!req->src || !slen) @@ -70,20 +71,24 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) if (!req->dst || !dlen) return -ENOSYS; - if (sg_nents(req->src) > 1 || req->src->offset + slen > PAGE_SIZE) + if (acomp_request_isvirt(req)) { + src = req->svirt; + dst = req->dvirt; + } else if (sg_nents(req->src) > 1 || + req->src->offset + slen > PAGE_SIZE) return -ENOSYS; - - if (sg_nents(req->dst) > 1) + else if (sg_nents(req->dst) > 1) return -ENOSYS; - - if (req->dst->offset >= PAGE_SIZE) + else if (req->dst->offset >= PAGE_SIZE) return -ENOSYS; + else { - if (req->dst->offset + dlen > PAGE_SIZE) - dlen = PAGE_SIZE - req->dst->offset; + if (req->dst->offset + dlen > PAGE_SIZE) + dlen = PAGE_SIZE - req->dst->offset; - src = kmap_local_page(sg_page(req->src)) + req->src->offset; - dst = kmap_local_page(sg_page(req->dst)) + req->dst->offset; + src = kmap_local_page(sg_page(req->src)) + req->src->offset; + dst = kmap_local_page(sg_page(req->dst)) + req->dst->offset; + } if (dir) ret = crypto_scomp_compress(scomp, src, slen, @@ -92,21 +97,37 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir) ret = crypto_scomp_decompress(scomp, src, slen, dst, &req->dlen, *ctx); - kunmap_local(src); - kunmap_local(dst); - flush_dcache_page(sg_page(req->dst)); + if (!acomp_request_isvirt(req)) { + kunmap_local(src); + kunmap_local(dst); + flush_dcache_page(sg_page(req->dst)); + } return ret; } +static int scomp_acomp_chain(struct acomp_req *req, int dir) +{ + struct acomp_req *r2; + int err; + + err = scomp_acomp_comp_decomp(req, dir); + req->base.err = err; + + list_for_each_entry(r2, &req->base.list, base.list) + r2->base.err = scomp_acomp_comp_decomp(r2, dir); + + return err; +} + static int scomp_acomp_compress(struct acomp_req *req) { - return scomp_acomp_comp_decomp(req, 1); + return scomp_acomp_chain(req, 1); } static int scomp_acomp_decompress(struct acomp_req *req) { - return scomp_acomp_comp_decomp(req, 0); + return scomp_acomp_chain(req, 0); } static void crypto_exit_scomp_ops_async(struct crypto_tfm *tfm) @@ -188,12 +209,21 @@ static const struct crypto_type crypto_scomp_type = { .tfmsize = offsetof(struct crypto_scomp, base), }; -int crypto_register_scomp(struct scomp_alg *alg) +static void scomp_prepare_alg(struct scomp_alg *alg) { struct crypto_alg *base = &alg->calg.base; comp_prepare_alg(&alg->calg); + base->cra_flags |= CRYPTO_ALG_REQ_CHAIN; +} + +int crypto_register_scomp(struct scomp_alg *alg) +{ + struct crypto_alg *base = &alg->calg.base; + + scomp_prepare_alg(alg); + base->cra_type = &crypto_scomp_type; base->cra_flags |= CRYPTO_ALG_TYPE_SCOMPRESS; From patchwork Thu Feb 27 10:15:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 13994057 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F154C021BE for ; Thu, 27 Feb 2025 10:15:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D16628000B; Thu, 27 Feb 2025 05:15:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 45AC028000A; Thu, 27 Feb 2025 05:15:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D54428000B; Thu, 27 Feb 2025 05:15:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 0953F28000A for ; Thu, 27 Feb 2025 05:15:16 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A61F6B60BF for ; Thu, 27 Feb 2025 10:15:15 +0000 (UTC) X-FDA: 83165316990.19.14E95F8 Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf26.hostedemail.com (Postfix) with ESMTP id D67B214003B for ; Thu, 27 Feb 2025 10:15:13 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=Z7sMw0fg; dmarc=pass (policy=quarantine) header.from=apana.org.au; spf=pass (imf26.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740651314; a=rsa-sha256; cv=none; b=7uiO5NfOxYk+FIRLcEkCmj4wBTTdUR9BkqfEFCfGvfcUIKLNMRuykArlz5owvKB1TNZElm QD4YttCd5w4FXd01xT/wDk01UnDQ/KURzsxvtjt5l+qhw3h2f42kehgaqwLNFSOcrEtatv v5YZ8BUj7+gwC/vA7L7UpAKkCVqhIlc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740651314; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=X/COYPSBnxqacFq0opJtS5fN0VNbCBV4FqPa/0g+uW0=; b=BQv+7aVLEI7dPYy2Q6U+SUdZotdxG/J94/KcB3/lqJ0BgerYluOK1ZsbJlBbgzhZ4PG+rm SzkDKjf3/Lsv9BCt/+CCZg1Zvbmw47f+nc1sfQvorFbw6KCFEmj09Rtgx8rOrGaLkUIPn8 H2jUvYrMeAAbldUdaKixOqQwy0rgZC0= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b=Z7sMw0fg; dmarc=pass (policy=quarantine) header.from=apana.org.au; spf=pass (imf26.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=X/COYPSBnxqacFq0opJtS5fN0VNbCBV4FqPa/0g+uW0=; b=Z7sMw0fg2Or5wgGuT/y40ULroe f60K2ja10VqUBJI2JgbgCgl+Q9xr7sYFCxC6GRDXcgjsqIgW8fvzIFHAIDsGhxLsj6hYJ/R1fLgrD hJkSqj2zDvxgZqs6c9Zw5Y8a2S0pEzMpy3+vOUu7mWHUx0fyadmf27RPg2x/XnFrb5twOq9CYPLxO l2Uoh2nG93hM2JulS2hbFYw9dFxJf3o4WDAxsThLOV7PHAuFplNHm01Ci06fgc3OrEKpIBj+9U4xH EWAg9SZ7cYAAustIzKjGxTXvUgITXSjt0ryklqVuh/wnk784rD/xJeEWM+NVdWswOK4oosMNgF8UU LocAv05A==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tnav7-002Drs-1X; Thu, 27 Feb 2025 18:15:10 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 27 Feb 2025 18:15:09 +0800 Date: Thu, 27 Feb 2025 18:15:09 +0800 Message-Id: <153c340a52090f2ff82f8f066203186a932d3f99.1740651138.git.herbert@gondor.apana.org.au> In-Reply-To: References: From: Herbert Xu Subject: [RFC PATCH 7/7] mm: zswap: Use acomp virtual address interface To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed X-Rspamd-Queue-Id: D67B214003B X-Rspamd-Server: rspam08 X-Rspam-User: X-Stat-Signature: cj1yaxj5ki7xc7tpuhtzehjmnc1rnc4r X-HE-Tag: 1740651313-171018 X-HE-Meta: U2FsdGVkX19HQXdbXapgOtwkNgtjBxHxRwBHLDjXR4/JeVsZUPh11k9BRzTaE7xMYYfsFFkcfKJ7x6Mdpy+nXP/DdloQB/axFTrPysEw/cN+tGvJjUXwDlKm0T/7kbOS20aRM/Bo9PimpQGtelxQlnoAM/7ZD23B0Nenh5y+36/+8L9utnFTsRAPUF8Isa9s1kiV9de6m9QCYnO8hkqcaryuxeYCXPWHYHw/CLKlE2clDipXilaBPGgztmayrzcDTqYTRBeQsuNQUgV/k3HgWQQVcbw5xu1jCDMBPv0myvf2mjfhZi4ReCzLE8YZua696wxMFtQvDnz3ySTZlRavrGFiwpZCuBecLa48L9uzSW4gk9TXbcUsUDZg4kME1/c6Fgsnyo8CI07BEb8zNa6PwIuk0i1nMZAK+d0+AntF1e68YSPZS0gwlyxueIs2aM2cLh5KOTIoGftXksR9VhE7VQpMlPK8WyxofdJatCokeR/FYPfaFiWaC7owoVCnulJ40e8HSLALQQoujHXB9fc1HorAITNjjutTji+68UGyC+Osgy4VufNxIy88pjGtUWNWWdNGDEZ15KnyY4HzdqyPjFR5JN7fl4YQ2WjwGHWJgRgegosP8CT0Hg70+t0X7l3yPoF8wpW02b711V7m4ap5kxNzVtosAbNLCLriDV6z5lyGIyWJ8cCvw+1YBoSnTxkM0UIp5yuMS5urBBxOOr509b0i3Pma5UQYqJJShvbUdqbR9YGGHB0RShPx1pEq09tLTRfKlttzonPeXhh+wP29GTpkxsdfI7uypt0Ni0+MoSrGoOkbJK1S0+vnRUW1NeRYBh75J4uvcIYECQ5nmA2ISMyIRa8qvm3VsX/ZCIB88IIGhvUk85Mhv2ZCFjlk2RXE+cgdM6kOKMWXu4fQ2QGEg+5LXblrIO4kXxN85VlraeRz28fowaQh6S2cYwY3OmXEL6s7zBD1R0T3Lr7xiYp Mlasur17 sYX9Zw1QybpePUsSokX89iMZkKo7pw9gziv3oH2xfyrER9C6Cet1VSzuymzteq+EUyrEYkDAA0zhZtBroSyz4Use73s9y2fyfacY9SR2uUJAEkGHB73bfhwQgxMZsgQsuYAXYzqryt2pjY4/l2/VYGbrnTrEI77h9z2NV/I5Sv2Y9Lg3ZzmDx5xKKfCdMsYglqFvlmqIpC+E2eRR4/R9xUvx4rw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Use the acomp virtual address interface. Signed-off-by: Herbert Xu --- mm/zswap.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index 6504174fbc6a..2b5a2398a9be 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -925,27 +925,20 @@ static bool zswap_compress(struct page *page, struct zswap_entry *entry, struct zswap_pool *pool) { struct crypto_acomp_ctx *acomp_ctx; - struct scatterlist input, output; int comp_ret = 0, alloc_ret = 0; unsigned int dlen = PAGE_SIZE; unsigned long handle; struct zpool *zpool; + const u8 *src; char *buf; gfp_t gfp; u8 *dst; acomp_ctx = acomp_ctx_get_cpu_lock(pool); + src = kmap_local_page(page); dst = acomp_ctx->buffer; - sg_init_table(&input, 1); - sg_set_page(&input, page, PAGE_SIZE, 0); - /* - * We need PAGE_SIZE * 2 here since there maybe over-compression case, - * and hardware-accelerators may won't check the dst buffer size, so - * giving the dst buffer with enough length to avoid buffer overflow. - */ - sg_init_one(&output, dst, PAGE_SIZE * 2); - acomp_request_set_params(acomp_ctx->req, &input, &output, PAGE_SIZE, dlen); + acomp_request_set_virt(acomp_ctx->req, src, dst, PAGE_SIZE, dlen); /* * it maybe looks a little bit silly that we send an asynchronous request, @@ -960,6 +953,7 @@ static bool zswap_compress(struct page *page, struct zswap_entry *entry, * acomp instance, so multiple threads can do (de)compression in parallel. */ comp_ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), &acomp_ctx->wait); + kunmap_local(src); dlen = acomp_ctx->req->dlen; if (comp_ret) goto unlock; @@ -994,9 +988,9 @@ static bool zswap_compress(struct page *page, struct zswap_entry *entry, static void zswap_decompress(struct zswap_entry *entry, struct folio *folio) { struct zpool *zpool = entry->pool->zpool; - struct scatterlist input, output; struct crypto_acomp_ctx *acomp_ctx; u8 *src; + u8 *dst; acomp_ctx = acomp_ctx_get_cpu_lock(entry->pool); src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); @@ -1016,11 +1010,10 @@ static void zswap_decompress(struct zswap_entry *entry, struct folio *folio) zpool_unmap_handle(zpool, entry->handle); } - sg_init_one(&input, src, entry->length); - sg_init_table(&output, 1); - sg_set_folio(&output, folio, PAGE_SIZE, 0); - acomp_request_set_params(acomp_ctx->req, &input, &output, entry->length, PAGE_SIZE); + dst = kmap_local_folio(folio, 0); + acomp_request_set_virt(acomp_ctx->req, src, dst, entry->length, PAGE_SIZE); BUG_ON(crypto_wait_req(crypto_acomp_decompress(acomp_ctx->req), &acomp_ctx->wait)); + kunmap_local(dst); BUG_ON(acomp_ctx->req->dlen != PAGE_SIZE); if (src != acomp_ctx->buffer)