Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp701460rwb; Thu, 19 Jan 2023 01:16:11 -0800 (PST) X-Google-Smtp-Source: AMrXdXuxuSkmQiJQ0CQ0Z6ReIAXrvCTZLKCpleJhA11FDa8ZSQg1syuo+7ibLuayW3eXJ9xfzFTW X-Received: by 2002:a05:6402:49:b0:49e:33ce:144d with SMTP id f9-20020a056402004900b0049e33ce144dmr8398397edu.37.1674119771126; Thu, 19 Jan 2023 01:16:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674119771; cv=none; d=google.com; s=arc-20160816; b=r4CrKOXYyQgZSxitU2BRkkZN7fo2qcYuDmISv5Ylb/lyVz4bC2vRaewyZkyrYiRo4K ooc4ibk+cSE6Kt7OOvqp0ORaUX62aPfPaOcEOu44ncbe3LKJ5cCo2bABL4t2YBCS417D lOsgQN7TFHYiFjJxXEt0zVmHm+ZKHfb4CuaP+w7Flw8Aswil6b1g2VYdkBu5kyCbKCyR i35iGZOqZXJ1qs3r6cZprTCLS485zTvnMybthzWpcNsgUDigFj66IqDdYIRzrSrLWLIA aSDHXeZ67NjkTe8WM+TeCX7uJRKNSDrQiLrg10hvzmMRshve/d0trdl66fi/eUwnqA1i ZRGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date; bh=czvkBcLCnEo9QilmWj2so/RT2ayqKS3ToMaf51gqTao=; b=fTxbk3D+AgW7ve4AeXxAbMxan1JIrnfV5srWv+g4gv0hbTCdMLMiDw+Gs+Is0d0yqJ pNtTNar5fodEs4UiJkI4ASLzJk/4/+ju6aXlY2L/Y4ffrAoQK11tJOK+FyJ44hW4yFv5 mEWJnuuiY+2EOcl2/BzhUYvQgDEkRkyyh7Y26BiC3TiMLigJQuAdekPPAe33SAp6RWoT Tyv0ZHx4kFlzYS9vJM85hqTWjZ1AdtdB4d34uX3w/P53T6b9n1PXtoBF6vyDwgOxgJHn 0EhFIULj1jiXc4Mk73mR+zj9hE8U2trB6rtYdPz4v/+glaLaMUehRMvi/DwUC1u0sC4q hlAw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s3-20020a17090699c300b008626e197ac4si9806615ejn.975.2023.01.19.01.15.46; Thu, 19 Jan 2023 01:16:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229486AbjASJIy (ORCPT + 99 others); Thu, 19 Jan 2023 04:08:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229538AbjASJIw (ORCPT ); Thu, 19 Jan 2023 04:08:52 -0500 Received: from formenos.hmeau.com (helcar.hmeau.com [216.24.177.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9612B55AE for ; Thu, 19 Jan 2023 01:08:49 -0800 (PST) Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.94.2 #2 (Debian)) id 1pIQuc-001gkV-Qe; Thu, 19 Jan 2023 17:08:47 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 19 Jan 2023 17:08:46 +0800 Date: Thu, 19 Jan 2023 17:08:46 +0800 From: Herbert Xu To: Linux Crypto Mailing List Cc: Ard Biesheuvel Subject: [PATCH] crypto: xts - Handle EBUSY correctly Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org As it is xts only handles the special return value of EINPROGERSS, which means that in all other cases it will free data related to the request. However, as the caller of xts may specify MAY_BACKLOG, we also need to expect EBUSY and treat it in the same way. Otherwise backlogged requests will trigger a use-after-free. Fixes: 8083b1bf8163 ("crypto: xts - add support for ciphertext stealing") Signed-off-by: Herbert Xu diff --git a/crypto/xts.c b/crypto/xts.c index 63c85b9e64e0..de6cbcf69bbd 100644 --- a/crypto/xts.c +++ b/crypto/xts.c @@ -203,12 +203,12 @@ static void xts_encrypt_done(struct crypto_async_request *areq, int err) if (!err) { struct xts_request_ctx *rctx = skcipher_request_ctx(req); - rctx->subreq.base.flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; + rctx->subreq.base.flags &= CRYPTO_TFM_REQ_MAY_BACKLOG; err = xts_xor_tweak_post(req, true); if (!err && unlikely(req->cryptlen % XTS_BLOCK_SIZE)) { err = xts_cts_final(req, crypto_skcipher_encrypt); - if (err == -EINPROGRESS) + if (err == -EINPROGRESS || err == -EBUSY) return; } } @@ -223,12 +223,12 @@ static void xts_decrypt_done(struct crypto_async_request *areq, int err) if (!err) { struct xts_request_ctx *rctx = skcipher_request_ctx(req); - rctx->subreq.base.flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; + rctx->subreq.base.flags &= CRYPTO_TFM_REQ_MAY_BACKLOG; err = xts_xor_tweak_post(req, false); if (!err && unlikely(req->cryptlen % XTS_BLOCK_SIZE)) { err = xts_cts_final(req, crypto_skcipher_decrypt); - if (err == -EINPROGRESS) + if (err == -EINPROGRESS || err == -EBUSY) return; } } -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt