From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5A75C433DF for ; Tue, 7 Jul 2020 06:35:06 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 63FAD206CD for ; Tue, 7 Jul 2020 06:35:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="yy9IMFhD"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="SRWfbF76" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 63FAD206CD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=P/EIP7pCgCRjwH6FQB+EHoxPZB4iPR17p9RJjkOC7qw=; b=yy9IMFhDIWWXhB2Isy0be79Iu 73Co3iCmYRD7YRYAsvtGNpMXhAfZBNN8MJnKk6xZ+TY3J2dJBLzKjzoDsO613rhnzUQ3uAys3j5V6 prrKuFWe6tLjzT3yReDev8LE0raF4Wthj70zbut+eGOF+9GWaPgKbkKH/3TZnFH4se7/fJD7wkYHf OK36qEDvj764MvTLQC7kDvbtT4vgIiSjA5dhQLEzWv8Yo8IWpKr1pXHNEzT2x6h3bfeF1oq792ucf E/OiDfcgeWI/xfO0T082cnUZ0SlQ+SnUVJ6kPtlCQw3o5TdLWQLd8gn/v5rauS+fAtZqN0SiEQOIc 4v+LHYMqg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jshBy-000384-8F; Tue, 07 Jul 2020 06:34:58 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jshBB-0002cK-Vq; Tue, 07 Jul 2020 06:34:12 +0000 Received: from e123331-lin.nice.arm.com (adsl-70.109.242.21.tellas.gr [109.242.21.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 81019206CD; Tue, 7 Jul 2020 06:34:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594103649; bh=6U7XguKXGmmibU47z0Py8zOQR8BTQqlqFCMXn3UNzgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SRWfbF76+3qXp6z2vLxeWgCTtyuEzCKcQ0prmUAZL0007ahMKJjqKBYiKe3An1Y4N deZ/RU3lvOM/jmuSXJ8cZLZnlnem2buSV+u1Si2Pk3TvV9DffseDB++tLuwNiNF9D7 hiQl2R1htEBqSTbKgNHT3Kw66Psge6htN5GMgr38= From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Subject: [PATCH v4 12/13] crypto: sahara - permit asynchronous skcipher as fallback Date: Tue, 7 Jul 2020 09:32:02 +0300 Message-Id: <20200707063203.5018-13-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200707063203.5018-1-ardb@kernel.org> References: <20200707063203.5018-1-ardb@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200707_023411_066409_77ACE905 X-CRM114-Status: GOOD ( 17.67 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eric Biggers , Corentin Labbe , Ayush Sawal , Jamie Iles , Fabio Estevam , Ard Biesheuvel , Herbert Xu , =?UTF-8?q?Horia=20Geant=C4=83?= , Rohit Maheshwari , Chen-Yu Tsai , Corentin Labbe , NXP Linux Team , Tom Lendacky , Sascha Hauer , Vinay Kumar Yadav , Maxime Ripard , Matthias Brugger , linux-amlogic@lists.infradead.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, John Allen , Tero Kristo , Pengutronix Kernel Team , Shawn Guo , "David S. Miller" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org RXZlbiB0aG91Z2ggdGhlIHNhaGFyYSBkcml2ZXIgaW1wbGVtZW50cyBhc3luY2hyb25vdXMgdmVy c2lvbnMgb2YKZWNiKGFlcykgYW5kIGNiYyhhZXMpLCB0aGUgZmFsbGJhY2tzIGl0IGFsbG9jYXRl cyBhcmUgcmVxdWlyZWQgdG8gYmUKc3luY2hyb25vdXMuIEdpdmVuIHRoYXQgU0lNRCBiYXNlZCBz b2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgYXJlIHVzdWFsbHkKYXN5bmNocm9ub3VzIGFzIHdlbGws IGV2ZW4gdGhvdWdoIHRoZXkgcmFyZWx5IGNvbXBsZXRlIGFzeW5jaHJvbm91c2x5Cih0aGlzIHR5 cGljYWxseSBvbmx5IGhhcHBlbnMgaW4gY2FzZXMgd2hlcmUgdGhlIHJlcXVlc3Qgd2FzIG1hZGUg ZnJvbQpzb2Z0aXJxIGNvbnRleHQsIHdoaWxlIFNJTUQgd2FzIGFscmVhZHkgaW4gdXNlIGluIHRo ZSB0YXNrIGNvbnRleHQgdGhhdAppdCBpbnRlcnJ1cHRlZCksIHRoZXNlIGltcGxlbWVudGF0aW9u cyBhcmUgZGlzcmVnYXJkZWQsIGFuZCBlaXRoZXIgdGhlCmdlbmVyaWMgQyB2ZXJzaW9uIG9yIGFu b3RoZXIgdGFibGUgYmFzZWQgdmVyc2lvbiBpbXBsZW1lbnRlZCBpbiBhc3NlbWJsZXIKaXMgc2Vs ZWN0ZWQgaW5zdGVhZC4KClNpbmNlIGZhbGxpbmcgYmFjayB0byBzeW5jaHJvbm91cyBBRVMgaXMg bm90IG9ubHkgYSBwZXJmb3JtYW5jZSBpc3N1ZSwgYnV0CnBvdGVudGlhbGx5IGEgc2VjdXJpdHkg aXNzdWUgYXMgd2VsbCAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGFibGUgYmFzZWQgQUVTCmlzIG5v dCB0aW1lIGludmFyaWFudCksIGxldCdzIGZpeCB0aGlzLCBieSBhbGxvY2F0aW5nIGFuIG9yZGlu YXJ5IHNrY2lwaGVyCmFzIHRoZSBmYWxsYmFjaywgYW5kIGludm9rZSBpdCB3aXRoIHRoZSBjb21w bGV0aW9uIHJvdXRpbmUgdGhhdCB3YXMgZ2l2ZW4KdG8gdGhlIG91dGVyIHJlcXVlc3QuCgpTaWdu ZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgpSZXZpZXdlZC1ieTog SG9yaWEgR2VhbnTEgyA8aG9yaWEuZ2VhbnRhQG54cC5jb20+Ci0tLQogZHJpdmVycy9jcnlwdG8v c2FoYXJhLmMgfCA5NiArKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ1IGlu c2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRv L3NhaGFyYS5jIGIvZHJpdmVycy9jcnlwdG8vc2FoYXJhLmMKaW5kZXggNDY2ZTMwYmQ1MjljLi4w YzhjYjIzYWU3MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL3NhaGFyYS5jCisrKyBiL2Ry aXZlcnMvY3J5cHRvL3NhaGFyYS5jCkBAIC0xNDYsMTEgKzE0NiwxMiBAQCBzdHJ1Y3Qgc2FoYXJh X2N0eCB7CiAJLyogQUVTLXNwZWNpZmljIGNvbnRleHQgKi8KIAlpbnQga2V5bGVuOwogCXU4IGtl eVtBRVNfS0VZU0laRV8xMjhdOwotCXN0cnVjdCBjcnlwdG9fc3luY19za2NpcGhlciAqZmFsbGJh Y2s7CisJc3RydWN0IGNyeXB0b19za2NpcGhlciAqZmFsbGJhY2s7CiB9OwogCiBzdHJ1Y3Qgc2Fo YXJhX2Flc19yZXFjdHggewogCXVuc2lnbmVkIGxvbmcgbW9kZTsKKwlzdHJ1Y3Qgc2tjaXBoZXJf cmVxdWVzdCBmYWxsYmFja19yZXE7CS8vIGtlZXAgYXQgdGhlIGVuZAogfTsKIAogLyoKQEAgLTYx NywxMCArNjE4LDEwIEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19zZXRrZXkoc3RydWN0IGNyeXB0 b19za2NpcGhlciAqdGZtLCBjb25zdCB1OCAqa2V5LAogCS8qCiAJICogVGhlIHJlcXVlc3RlZCBr ZXkgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEhXLCBkbyBhIGZhbGxiYWNrLgogCSAqLwotCWNy eXB0b19zeW5jX3NrY2lwaGVyX2NsZWFyX2ZsYWdzKGN0eC0+ZmFsbGJhY2ssIENSWVBUT19URk1f UkVRX01BU0spOwotCWNyeXB0b19zeW5jX3NrY2lwaGVyX3NldF9mbGFncyhjdHgtPmZhbGxiYWNr LCB0Zm0tPmJhc2UuY3J0X2ZsYWdzICYKKwljcnlwdG9fc2tjaXBoZXJfY2xlYXJfZmxhZ3MoY3R4 LT5mYWxsYmFjaywgQ1JZUFRPX1RGTV9SRVFfTUFTSyk7CisJY3J5cHRvX3NrY2lwaGVyX3NldF9m bGFncyhjdHgtPmZhbGxiYWNrLCB0Zm0tPmJhc2UuY3J0X2ZsYWdzICYKIAkJCQkJCSBDUllQVE9f VEZNX1JFUV9NQVNLKTsKLQlyZXR1cm4gY3J5cHRvX3N5bmNfc2tjaXBoZXJfc2V0a2V5KGN0eC0+ ZmFsbGJhY2ssIGtleSwga2V5bGVuKTsKKwlyZXR1cm4gY3J5cHRvX3NrY2lwaGVyX3NldGtleShj dHgtPmZhbGxiYWNrLCBrZXksIGtleWxlbik7CiB9CiAKIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19j cnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxLCB1bnNpZ25lZCBsb25nIG1vZGUpCkBA IC02NTEsMjEgKzY1MiwxOSBAQCBzdGF0aWMgaW50IHNhaGFyYV9hZXNfY3J5cHQoc3RydWN0IHNr Y2lwaGVyX3JlcXVlc3QgKnJlcSwgdW5zaWduZWQgbG9uZyBtb2RlKQogCiBzdGF0aWMgaW50IHNh aGFyYV9hZXNfZWNiX2VuY3J5cHQoc3RydWN0IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSkKIHsKKwlz dHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHggKnJjdHggPSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEp OwogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KAogCQljcnlw dG9fc2tjaXBoZXJfcmVxdGZtKHJlcSkpOwotCWludCBlcnI7CiAKIAlpZiAodW5saWtlbHkoY3R4 LT5rZXlsZW4gIT0gQUVTX0tFWVNJWkVfMTI4KSkgewotCQlTWU5DX1NLQ0lQSEVSX1JFUVVFU1Rf T05fU1RBQ0soc3VicmVxLCBjdHgtPmZhbGxiYWNrKTsKLQotCQlza2NpcGhlcl9yZXF1ZXN0X3Nl dF9zeW5jX3RmbShzdWJyZXEsIGN0eC0+ZmFsbGJhY2spOwotCQlza2NpcGhlcl9yZXF1ZXN0X3Nl dF9jYWxsYmFjayhzdWJyZXEsIHJlcS0+YmFzZS5mbGFncywKLQkJCQkJICAgICAgTlVMTCwgTlVM TCk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KHN1YnJlcSwgcmVxLT5zcmMsIHJlcS0+ ZHN0LAotCQkJCQkgICByZXEtPmNyeXB0bGVuLCByZXEtPml2KTsKLQkJZXJyID0gY3J5cHRvX3Nr Y2lwaGVyX2VuY3J5cHQoc3VicmVxKTsKLQkJc2tjaXBoZXJfcmVxdWVzdF96ZXJvKHN1YnJlcSk7 Ci0JCXJldHVybiBlcnI7CisJCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X3RmbSgmcmN0eC0+ZmFsbGJh Y2tfcmVxLCBjdHgtPmZhbGxiYWNrKTsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2so JnJjdHgtPmZhbGxiYWNrX3JlcSwKKwkJCQkJICAgICAgcmVxLT5iYXNlLmZsYWdzLAorCQkJCQkg ICAgICByZXEtPmJhc2UuY29tcGxldGUsCisJCQkJCSAgICAgIHJlcS0+YmFzZS5kYXRhKTsKKwkJ c2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoJnJjdHgtPmZhbGxiYWNrX3JlcSwgcmVxLT5zcmMs CisJCQkJCSAgIHJlcS0+ZHN0LCByZXEtPmNyeXB0bGVuLCByZXEtPml2KTsKKwkJcmV0dXJuIGNy eXB0b19za2NpcGhlcl9lbmNyeXB0KCZyY3R4LT5mYWxsYmFja19yZXEpOwogCX0KIAogCXJldHVy biBzYWhhcmFfYWVzX2NyeXB0KHJlcSwgRkxBR1NfRU5DUllQVCk7CkBAIC02NzMsMjEgKzY3Miwx OSBAQCBzdGF0aWMgaW50IHNhaGFyYV9hZXNfZWNiX2VuY3J5cHQoc3RydWN0IHNrY2lwaGVyX3Jl cXVlc3QgKnJlcSkKIAogc3RhdGljIGludCBzYWhhcmFfYWVzX2VjYl9kZWNyeXB0KHN0cnVjdCBz a2NpcGhlcl9yZXF1ZXN0ICpyZXEpCiB7CisJc3RydWN0IHNhaGFyYV9hZXNfcmVxY3R4ICpyY3R4 ID0gc2tjaXBoZXJfcmVxdWVzdF9jdHgocmVxKTsKIAlzdHJ1Y3Qgc2FoYXJhX2N0eCAqY3R4ID0g Y3J5cHRvX3NrY2lwaGVyX2N0eCgKIAkJY3J5cHRvX3NrY2lwaGVyX3JlcXRmbShyZXEpKTsKLQlp bnQgZXJyOwogCiAJaWYgKHVubGlrZWx5KGN0eC0+a2V5bGVuICE9IEFFU19LRVlTSVpFXzEyOCkp IHsKLQkJU1lOQ19TS0NJUEhFUl9SRVFVRVNUX09OX1NUQUNLKHN1YnJlcSwgY3R4LT5mYWxsYmFj ayk7Ci0KLQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfc3luY190Zm0oc3VicmVxLCBjdHgtPmZhbGxi YWNrKTsKLQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2soc3VicmVxLCByZXEtPmJhc2Uu ZmxhZ3MsCi0JCQkJCSAgICAgIE5VTEwsIE5VTEwpOwotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9j cnlwdChzdWJyZXEsIHJlcS0+c3JjLCByZXEtPmRzdCwKLQkJCQkJICAgcmVxLT5jcnlwdGxlbiwg cmVxLT5pdik7Ci0JCWVyciA9IGNyeXB0b19za2NpcGhlcl9kZWNyeXB0KHN1YnJlcSk7Ci0JCXNr Y2lwaGVyX3JlcXVlc3RfemVybyhzdWJyZXEpOwotCQlyZXR1cm4gZXJyOworCQlza2NpcGhlcl9y ZXF1ZXN0X3NldF90Zm0oJnJjdHgtPmZhbGxiYWNrX3JlcSwgY3R4LT5mYWxsYmFjayk7CisJCXNr Y2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKCZyY3R4LT5mYWxsYmFja19yZXEsCisJCQkJCSAg ICAgIHJlcS0+YmFzZS5mbGFncywKKwkJCQkJICAgICAgcmVxLT5iYXNlLmNvbXBsZXRlLAorCQkJ CQkgICAgICByZXEtPmJhc2UuZGF0YSk7CisJCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KCZy Y3R4LT5mYWxsYmFja19yZXEsIHJlcS0+c3JjLAorCQkJCQkgICByZXEtPmRzdCwgcmVxLT5jcnlw dGxlbiwgcmVxLT5pdik7CisJCXJldHVybiBjcnlwdG9fc2tjaXBoZXJfZGVjcnlwdCgmcmN0eC0+ ZmFsbGJhY2tfcmVxKTsKIAl9CiAKIAlyZXR1cm4gc2FoYXJhX2Flc19jcnlwdChyZXEsIDApOwpA QCAtNjk1LDIxICs2OTIsMTkgQEAgc3RhdGljIGludCBzYWhhcmFfYWVzX2VjYl9kZWNyeXB0KHN0 cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpCiAKIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19jYmNf ZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQogeworCXN0cnVjdCBzYWhhcmFf YWVzX3JlcWN0eCAqcmN0eCA9IHNrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7CiAJc3RydWN0IHNh aGFyYV9jdHggKmN0eCA9IGNyeXB0b19za2NpcGhlcl9jdHgoCiAJCWNyeXB0b19za2NpcGhlcl9y ZXF0Zm0ocmVxKSk7Ci0JaW50IGVycjsKIAogCWlmICh1bmxpa2VseShjdHgtPmtleWxlbiAhPSBB RVNfS0VZU0laRV8xMjgpKSB7Ci0JCVNZTkNfU0tDSVBIRVJfUkVRVUVTVF9PTl9TVEFDSyhzdWJy ZXEsIGN0eC0+ZmFsbGJhY2spOwotCi0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X3N5bmNfdGZtKHN1 YnJlcSwgY3R4LT5mYWxsYmFjayk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKHN1 YnJlcSwgcmVxLT5iYXNlLmZsYWdzLAotCQkJCQkgICAgICBOVUxMLCBOVUxMKTsKLQkJc2tjaXBo ZXJfcmVxdWVzdF9zZXRfY3J5cHQoc3VicmVxLCByZXEtPnNyYywgcmVxLT5kc3QsCi0JCQkJCSAg IHJlcS0+Y3J5cHRsZW4sIHJlcS0+aXYpOwotCQllcnIgPSBjcnlwdG9fc2tjaXBoZXJfZW5jcnlw dChzdWJyZXEpOwotCQlza2NpcGhlcl9yZXF1ZXN0X3plcm8oc3VicmVxKTsKLQkJcmV0dXJuIGVy cjsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfdGZtKCZyY3R4LT5mYWxsYmFja19yZXEsIGN0eC0+ ZmFsbGJhY2spOworCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjaygmcmN0eC0+ZmFsbGJh Y2tfcmVxLAorCQkJCQkgICAgICByZXEtPmJhc2UuZmxhZ3MsCisJCQkJCSAgICAgIHJlcS0+YmFz ZS5jb21wbGV0ZSwKKwkJCQkJICAgICAgcmVxLT5iYXNlLmRhdGEpOworCQlza2NpcGhlcl9yZXF1 ZXN0X3NldF9jcnlwdCgmcmN0eC0+ZmFsbGJhY2tfcmVxLCByZXEtPnNyYywKKwkJCQkJICAgcmVx LT5kc3QsIHJlcS0+Y3J5cHRsZW4sIHJlcS0+aXYpOworCQlyZXR1cm4gY3J5cHRvX3NrY2lwaGVy X2VuY3J5cHQoJnJjdHgtPmZhbGxiYWNrX3JlcSk7CiAJfQogCiAJcmV0dXJuIHNhaGFyYV9hZXNf Y3J5cHQocmVxLCBGTEFHU19FTkNSWVBUIHwgRkxBR1NfQ0JDKTsKQEAgLTcxNywyMSArNzEyLDE5 IEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19jYmNfZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVx dWVzdCAqcmVxKQogCiBzdGF0aWMgaW50IHNhaGFyYV9hZXNfY2JjX2RlY3J5cHQoc3RydWN0IHNr Y2lwaGVyX3JlcXVlc3QgKnJlcSkKIHsKKwlzdHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHggKnJjdHgg PSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOwogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBj cnlwdG9fc2tjaXBoZXJfY3R4KAogCQljcnlwdG9fc2tjaXBoZXJfcmVxdGZtKHJlcSkpOwotCWlu dCBlcnI7CiAKIAlpZiAodW5saWtlbHkoY3R4LT5rZXlsZW4gIT0gQUVTX0tFWVNJWkVfMTI4KSkg ewotCQlTWU5DX1NLQ0lQSEVSX1JFUVVFU1RfT05fU1RBQ0soc3VicmVxLCBjdHgtPmZhbGxiYWNr KTsKLQotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9zeW5jX3RmbShzdWJyZXEsIGN0eC0+ZmFsbGJh Y2spOwotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayhzdWJyZXEsIHJlcS0+YmFzZS5m bGFncywKLQkJCQkJICAgICAgTlVMTCwgTlVMTCk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2Ny eXB0KHN1YnJlcSwgcmVxLT5zcmMsIHJlcS0+ZHN0LAotCQkJCQkgICByZXEtPmNyeXB0bGVuLCBy ZXEtPml2KTsKLQkJZXJyID0gY3J5cHRvX3NrY2lwaGVyX2RlY3J5cHQoc3VicmVxKTsKLQkJc2tj aXBoZXJfcmVxdWVzdF96ZXJvKHN1YnJlcSk7Ci0JCXJldHVybiBlcnI7CisJCXNrY2lwaGVyX3Jl cXVlc3Rfc2V0X3RmbSgmcmN0eC0+ZmFsbGJhY2tfcmVxLCBjdHgtPmZhbGxiYWNrKTsKKwkJc2tj aXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2soJnJjdHgtPmZhbGxiYWNrX3JlcSwKKwkJCQkJICAg ICAgcmVxLT5iYXNlLmZsYWdzLAorCQkJCQkgICAgICByZXEtPmJhc2UuY29tcGxldGUsCisJCQkJ CSAgICAgIHJlcS0+YmFzZS5kYXRhKTsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoJnJj dHgtPmZhbGxiYWNrX3JlcSwgcmVxLT5zcmMsCisJCQkJCSAgIHJlcS0+ZHN0LCByZXEtPmNyeXB0 bGVuLCByZXEtPml2KTsKKwkJcmV0dXJuIGNyeXB0b19za2NpcGhlcl9kZWNyeXB0KCZyY3R4LT5m YWxsYmFja19yZXEpOwogCX0KIAogCXJldHVybiBzYWhhcmFfYWVzX2NyeXB0KHJlcSwgRkxBR1Nf Q0JDKTsKQEAgLTc0MiwxNCArNzM1LDE1IEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19pbml0X3Rm bShzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0pCiAJY29uc3QgY2hhciAqbmFtZSA9IGNyeXB0 b190Zm1fYWxnX25hbWUoJnRmbS0+YmFzZSk7CiAJc3RydWN0IHNhaGFyYV9jdHggKmN0eCA9IGNy eXB0b19za2NpcGhlcl9jdHgodGZtKTsKIAotCWN0eC0+ZmFsbGJhY2sgPSBjcnlwdG9fYWxsb2Nf c3luY19za2NpcGhlcihuYW1lLCAwLAorCWN0eC0+ZmFsbGJhY2sgPSBjcnlwdG9fYWxsb2Nfc2tj aXBoZXIobmFtZSwgMCwKIAkJCQkJICAgICAgQ1JZUFRPX0FMR19ORUVEX0ZBTExCQUNLKTsKIAlp ZiAoSVNfRVJSKGN0eC0+ZmFsbGJhY2spKSB7CiAJCXByX2VycigiRXJyb3IgYWxsb2NhdGluZyBm YWxsYmFjayBhbGdvICVzXG4iLCBuYW1lKTsKIAkJcmV0dXJuIFBUUl9FUlIoY3R4LT5mYWxsYmFj ayk7CiAJfQogCi0JY3J5cHRvX3NrY2lwaGVyX3NldF9yZXFzaXplKHRmbSwgc2l6ZW9mKHN0cnVj dCBzYWhhcmFfYWVzX3JlcWN0eCkpOworCWNyeXB0b19za2NpcGhlcl9zZXRfcmVxc2l6ZSh0Zm0s IHNpemVvZihzdHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHgpICsKKwkJCQkJIGNyeXB0b19za2NpcGhl cl9yZXFzaXplKGN0eC0+ZmFsbGJhY2spKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzU4LDcgKzc1 Miw3IEBAIHN0YXRpYyB2b2lkIHNhaGFyYV9hZXNfZXhpdF90Zm0oc3RydWN0IGNyeXB0b19za2Np cGhlciAqdGZtKQogewogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJf Y3R4KHRmbSk7CiAKLQljcnlwdG9fZnJlZV9zeW5jX3NrY2lwaGVyKGN0eC0+ZmFsbGJhY2spOwor CWNyeXB0b19mcmVlX3NrY2lwaGVyKGN0eC0+ZmFsbGJhY2spOwogfQogCiBzdGF0aWMgdTMyIHNh aGFyYV9zaGFfaW5pdF9oZHIoc3RydWN0IHNhaGFyYV9kZXYgKmRldiwKLS0gCjIuMTcuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9n aWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7A8DC433E0 for ; Tue, 7 Jul 2020 06:34:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AEBBF20720 for ; Tue, 7 Jul 2020 06:34:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594103651; bh=6U7XguKXGmmibU47z0Py8zOQR8BTQqlqFCMXn3UNzgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=yLyDgoHlrwJZi6auoB45dMqJoOSPTETb3pHuMHStyfhM1ilcinpHuefPHPgQDSluU lfBT/lcD1qveyod0afEt5Gvvbds8qziIMaULSlTbEemcC7X+Yl3rQAlxY9m3/4dWpr UQz7v9ilnrDJfU4lPAa1nFBcpkKJBIhSwUWlnr0A= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727895AbgGGGeL (ORCPT ); Tue, 7 Jul 2020 02:34:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:33680 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726889AbgGGGeL (ORCPT ); Tue, 7 Jul 2020 02:34:11 -0400 Received: from e123331-lin.nice.arm.com (adsl-70.109.242.21.tellas.gr [109.242.21.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 81019206CD; Tue, 7 Jul 2020 06:34:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594103649; bh=6U7XguKXGmmibU47z0Py8zOQR8BTQqlqFCMXn3UNzgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SRWfbF76+3qXp6z2vLxeWgCTtyuEzCKcQ0prmUAZL0007ahMKJjqKBYiKe3An1Y4N deZ/RU3lvOM/jmuSXJ8cZLZnlnem2buSV+u1Si2Pk3TvV9DffseDB++tLuwNiNF9D7 hiQl2R1htEBqSTbKgNHT3Kw66Psge6htN5GMgr38= From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Cc: Ard Biesheuvel , Corentin Labbe , Corentin Labbe , Herbert Xu , "David S. Miller" , Maxime Ripard , Chen-Yu Tsai , Tom Lendacky , John Allen , Ayush Sawal , Vinay Kumar Yadav , Rohit Maheshwari , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Jamie Iles , Eric Biggers , Tero Kristo , Matthias Brugger , =?UTF-8?q?Horia=20Geant=C4=83?= , linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, linux-amlogic@lists.infradead.org Subject: [PATCH v4 12/13] crypto: sahara - permit asynchronous skcipher as fallback Date: Tue, 7 Jul 2020 09:32:02 +0300 Message-Id: <20200707063203.5018-13-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200707063203.5018-1-ardb@kernel.org> References: <20200707063203.5018-1-ardb@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Even though the sahara driver implements asynchronous versions of ecb(aes) and cbc(aes), the fallbacks it allocates are required to be synchronous. Given that SIMD based software implementations are usually asynchronous as well, even though they rarely complete asynchronously (this typically only happens in cases where the request was made from softirq context, while SIMD was already in use in the task context that it interrupted), these implementations are disregarded, and either the generic C version or another table based version implemented in assembler is selected instead. Since falling back to synchronous AES is not only a performance issue, but potentially a security issue as well (due to the fact that table based AES is not time invariant), let's fix this, by allocating an ordinary skcipher as the fallback, and invoke it with the completion routine that was given to the outer request. Signed-off-by: Ard Biesheuvel Reviewed-by: Horia Geantă --- drivers/crypto/sahara.c | 96 +++++++++----------- 1 file changed, 45 insertions(+), 51 deletions(-) diff --git a/drivers/crypto/sahara.c b/drivers/crypto/sahara.c index 466e30bd529c..0c8cb23ae708 100644 --- a/drivers/crypto/sahara.c +++ b/drivers/crypto/sahara.c @@ -146,11 +146,12 @@ struct sahara_ctx { /* AES-specific context */ int keylen; u8 key[AES_KEYSIZE_128]; - struct crypto_sync_skcipher *fallback; + struct crypto_skcipher *fallback; }; struct sahara_aes_reqctx { unsigned long mode; + struct skcipher_request fallback_req; // keep at the end }; /* @@ -617,10 +618,10 @@ static int sahara_aes_setkey(struct crypto_skcipher *tfm, const u8 *key, /* * The requested key size is not supported by HW, do a fallback. */ - crypto_sync_skcipher_clear_flags(ctx->fallback, CRYPTO_TFM_REQ_MASK); - crypto_sync_skcipher_set_flags(ctx->fallback, tfm->base.crt_flags & + crypto_skcipher_clear_flags(ctx->fallback, CRYPTO_TFM_REQ_MASK); + crypto_skcipher_set_flags(ctx->fallback, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK); - return crypto_sync_skcipher_setkey(ctx->fallback, key, keylen); + return crypto_skcipher_setkey(ctx->fallback, key, keylen); } static int sahara_aes_crypt(struct skcipher_request *req, unsigned long mode) @@ -651,21 +652,19 @@ static int sahara_aes_crypt(struct skcipher_request *req, unsigned long mode) static int sahara_aes_ecb_encrypt(struct skcipher_request *req) { + struct sahara_aes_reqctx *rctx = skcipher_request_ctx(req); struct sahara_ctx *ctx = crypto_skcipher_ctx( crypto_skcipher_reqtfm(req)); - int err; if (unlikely(ctx->keylen != AES_KEYSIZE_128)) { - SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, ctx->fallback); - - skcipher_request_set_sync_tfm(subreq, ctx->fallback); - skcipher_request_set_callback(subreq, req->base.flags, - NULL, NULL); - skcipher_request_set_crypt(subreq, req->src, req->dst, - req->cryptlen, req->iv); - err = crypto_skcipher_encrypt(subreq); - skcipher_request_zero(subreq); - return err; + skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); + skcipher_request_set_callback(&rctx->fallback_req, + req->base.flags, + req->base.complete, + req->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, req->src, + req->dst, req->cryptlen, req->iv); + return crypto_skcipher_encrypt(&rctx->fallback_req); } return sahara_aes_crypt(req, FLAGS_ENCRYPT); @@ -673,21 +672,19 @@ static int sahara_aes_ecb_encrypt(struct skcipher_request *req) static int sahara_aes_ecb_decrypt(struct skcipher_request *req) { + struct sahara_aes_reqctx *rctx = skcipher_request_ctx(req); struct sahara_ctx *ctx = crypto_skcipher_ctx( crypto_skcipher_reqtfm(req)); - int err; if (unlikely(ctx->keylen != AES_KEYSIZE_128)) { - SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, ctx->fallback); - - skcipher_request_set_sync_tfm(subreq, ctx->fallback); - skcipher_request_set_callback(subreq, req->base.flags, - NULL, NULL); - skcipher_request_set_crypt(subreq, req->src, req->dst, - req->cryptlen, req->iv); - err = crypto_skcipher_decrypt(subreq); - skcipher_request_zero(subreq); - return err; + skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); + skcipher_request_set_callback(&rctx->fallback_req, + req->base.flags, + req->base.complete, + req->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, req->src, + req->dst, req->cryptlen, req->iv); + return crypto_skcipher_decrypt(&rctx->fallback_req); } return sahara_aes_crypt(req, 0); @@ -695,21 +692,19 @@ static int sahara_aes_ecb_decrypt(struct skcipher_request *req) static int sahara_aes_cbc_encrypt(struct skcipher_request *req) { + struct sahara_aes_reqctx *rctx = skcipher_request_ctx(req); struct sahara_ctx *ctx = crypto_skcipher_ctx( crypto_skcipher_reqtfm(req)); - int err; if (unlikely(ctx->keylen != AES_KEYSIZE_128)) { - SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, ctx->fallback); - - skcipher_request_set_sync_tfm(subreq, ctx->fallback); - skcipher_request_set_callback(subreq, req->base.flags, - NULL, NULL); - skcipher_request_set_crypt(subreq, req->src, req->dst, - req->cryptlen, req->iv); - err = crypto_skcipher_encrypt(subreq); - skcipher_request_zero(subreq); - return err; + skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); + skcipher_request_set_callback(&rctx->fallback_req, + req->base.flags, + req->base.complete, + req->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, req->src, + req->dst, req->cryptlen, req->iv); + return crypto_skcipher_encrypt(&rctx->fallback_req); } return sahara_aes_crypt(req, FLAGS_ENCRYPT | FLAGS_CBC); @@ -717,21 +712,19 @@ static int sahara_aes_cbc_encrypt(struct skcipher_request *req) static int sahara_aes_cbc_decrypt(struct skcipher_request *req) { + struct sahara_aes_reqctx *rctx = skcipher_request_ctx(req); struct sahara_ctx *ctx = crypto_skcipher_ctx( crypto_skcipher_reqtfm(req)); - int err; if (unlikely(ctx->keylen != AES_KEYSIZE_128)) { - SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, ctx->fallback); - - skcipher_request_set_sync_tfm(subreq, ctx->fallback); - skcipher_request_set_callback(subreq, req->base.flags, - NULL, NULL); - skcipher_request_set_crypt(subreq, req->src, req->dst, - req->cryptlen, req->iv); - err = crypto_skcipher_decrypt(subreq); - skcipher_request_zero(subreq); - return err; + skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); + skcipher_request_set_callback(&rctx->fallback_req, + req->base.flags, + req->base.complete, + req->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, req->src, + req->dst, req->cryptlen, req->iv); + return crypto_skcipher_decrypt(&rctx->fallback_req); } return sahara_aes_crypt(req, FLAGS_CBC); @@ -742,14 +735,15 @@ static int sahara_aes_init_tfm(struct crypto_skcipher *tfm) const char *name = crypto_tfm_alg_name(&tfm->base); struct sahara_ctx *ctx = crypto_skcipher_ctx(tfm); - ctx->fallback = crypto_alloc_sync_skcipher(name, 0, + ctx->fallback = crypto_alloc_skcipher(name, 0, CRYPTO_ALG_NEED_FALLBACK); if (IS_ERR(ctx->fallback)) { pr_err("Error allocating fallback algo %s\n", name); return PTR_ERR(ctx->fallback); } - crypto_skcipher_set_reqsize(tfm, sizeof(struct sahara_aes_reqctx)); + crypto_skcipher_set_reqsize(tfm, sizeof(struct sahara_aes_reqctx) + + crypto_skcipher_reqsize(ctx->fallback)); return 0; } @@ -758,7 +752,7 @@ static void sahara_aes_exit_tfm(struct crypto_skcipher *tfm) { struct sahara_ctx *ctx = crypto_skcipher_ctx(tfm); - crypto_free_sync_skcipher(ctx->fallback); + crypto_free_skcipher(ctx->fallback); } static u32 sahara_sha_init_hdr(struct sahara_dev *dev, -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E293CC433E0 for ; Tue, 7 Jul 2020 06:36:45 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A3249206F6 for ; Tue, 7 Jul 2020 06:36:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="DoiytXtt"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="SRWfbF76" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A3249206F6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5L3UUf7hfA6V0QqmmFzEYloYNVlQ0kxZrPRJQtmtPO0=; b=DoiytXtt1Ggu8e9Jw+sWqQpTY sr/yNzdIy4PWg1kLNIhDgy5jntVoAa0jNeOPyTiWoFvph18MRIo3CmEB2SwUUpP/RAdQYEQPn64Eb SFTqLFVtyytGT49T3/uuFYldh5ZIe0acEqr+hkcBdC3d1WYz3eq6F8YCTu2I7gKYeGt2Vl9ybI3+G eGOGZbR/Mcc84hWTP8yjRLaVi/fwoeUicb+jzjOjw1Cr7xpgZ1vRAwBWnZkm9djWCiLJ7TfWz0Vmx TBE/Plh6Y/Dd66G4r0r15JkyZrymzbosZre7yxLZShQB0anE283rLv2ZK1bPhVKcnwXfPHQt8pXfR 4yMe4vE5w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jshC4-0003A0-J7; Tue, 07 Jul 2020 06:35:05 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jshBB-0002cK-Vq; Tue, 07 Jul 2020 06:34:12 +0000 Received: from e123331-lin.nice.arm.com (adsl-70.109.242.21.tellas.gr [109.242.21.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 81019206CD; Tue, 7 Jul 2020 06:34:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594103649; bh=6U7XguKXGmmibU47z0Py8zOQR8BTQqlqFCMXn3UNzgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SRWfbF76+3qXp6z2vLxeWgCTtyuEzCKcQ0prmUAZL0007ahMKJjqKBYiKe3An1Y4N deZ/RU3lvOM/jmuSXJ8cZLZnlnem2buSV+u1Si2Pk3TvV9DffseDB++tLuwNiNF9D7 hiQl2R1htEBqSTbKgNHT3Kw66Psge6htN5GMgr38= From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Subject: [PATCH v4 12/13] crypto: sahara - permit asynchronous skcipher as fallback Date: Tue, 7 Jul 2020 09:32:02 +0300 Message-Id: <20200707063203.5018-13-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200707063203.5018-1-ardb@kernel.org> References: <20200707063203.5018-1-ardb@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200707_023411_066409_77ACE905 X-CRM114-Status: GOOD ( 17.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eric Biggers , Corentin Labbe , Ayush Sawal , Jamie Iles , Fabio Estevam , Ard Biesheuvel , Herbert Xu , =?UTF-8?q?Horia=20Geant=C4=83?= , Rohit Maheshwari , Chen-Yu Tsai , Corentin Labbe , NXP Linux Team , Tom Lendacky , Sascha Hauer , Vinay Kumar Yadav , Maxime Ripard , Matthias Brugger , linux-amlogic@lists.infradead.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, John Allen , Tero Kristo , Pengutronix Kernel Team , Shawn Guo , "David S. Miller" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RXZlbiB0aG91Z2ggdGhlIHNhaGFyYSBkcml2ZXIgaW1wbGVtZW50cyBhc3luY2hyb25vdXMgdmVy c2lvbnMgb2YKZWNiKGFlcykgYW5kIGNiYyhhZXMpLCB0aGUgZmFsbGJhY2tzIGl0IGFsbG9jYXRl cyBhcmUgcmVxdWlyZWQgdG8gYmUKc3luY2hyb25vdXMuIEdpdmVuIHRoYXQgU0lNRCBiYXNlZCBz b2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMgYXJlIHVzdWFsbHkKYXN5bmNocm9ub3VzIGFzIHdlbGws IGV2ZW4gdGhvdWdoIHRoZXkgcmFyZWx5IGNvbXBsZXRlIGFzeW5jaHJvbm91c2x5Cih0aGlzIHR5 cGljYWxseSBvbmx5IGhhcHBlbnMgaW4gY2FzZXMgd2hlcmUgdGhlIHJlcXVlc3Qgd2FzIG1hZGUg ZnJvbQpzb2Z0aXJxIGNvbnRleHQsIHdoaWxlIFNJTUQgd2FzIGFscmVhZHkgaW4gdXNlIGluIHRo ZSB0YXNrIGNvbnRleHQgdGhhdAppdCBpbnRlcnJ1cHRlZCksIHRoZXNlIGltcGxlbWVudGF0aW9u cyBhcmUgZGlzcmVnYXJkZWQsIGFuZCBlaXRoZXIgdGhlCmdlbmVyaWMgQyB2ZXJzaW9uIG9yIGFu b3RoZXIgdGFibGUgYmFzZWQgdmVyc2lvbiBpbXBsZW1lbnRlZCBpbiBhc3NlbWJsZXIKaXMgc2Vs ZWN0ZWQgaW5zdGVhZC4KClNpbmNlIGZhbGxpbmcgYmFjayB0byBzeW5jaHJvbm91cyBBRVMgaXMg bm90IG9ubHkgYSBwZXJmb3JtYW5jZSBpc3N1ZSwgYnV0CnBvdGVudGlhbGx5IGEgc2VjdXJpdHkg aXNzdWUgYXMgd2VsbCAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGFibGUgYmFzZWQgQUVTCmlzIG5v dCB0aW1lIGludmFyaWFudCksIGxldCdzIGZpeCB0aGlzLCBieSBhbGxvY2F0aW5nIGFuIG9yZGlu YXJ5IHNrY2lwaGVyCmFzIHRoZSBmYWxsYmFjaywgYW5kIGludm9rZSBpdCB3aXRoIHRoZSBjb21w bGV0aW9uIHJvdXRpbmUgdGhhdCB3YXMgZ2l2ZW4KdG8gdGhlIG91dGVyIHJlcXVlc3QuCgpTaWdu ZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgpSZXZpZXdlZC1ieTog SG9yaWEgR2VhbnTEgyA8aG9yaWEuZ2VhbnRhQG54cC5jb20+Ci0tLQogZHJpdmVycy9jcnlwdG8v c2FoYXJhLmMgfCA5NiArKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ1IGlu c2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRv L3NhaGFyYS5jIGIvZHJpdmVycy9jcnlwdG8vc2FoYXJhLmMKaW5kZXggNDY2ZTMwYmQ1MjljLi4w YzhjYjIzYWU3MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL3NhaGFyYS5jCisrKyBiL2Ry aXZlcnMvY3J5cHRvL3NhaGFyYS5jCkBAIC0xNDYsMTEgKzE0NiwxMiBAQCBzdHJ1Y3Qgc2FoYXJh X2N0eCB7CiAJLyogQUVTLXNwZWNpZmljIGNvbnRleHQgKi8KIAlpbnQga2V5bGVuOwogCXU4IGtl eVtBRVNfS0VZU0laRV8xMjhdOwotCXN0cnVjdCBjcnlwdG9fc3luY19za2NpcGhlciAqZmFsbGJh Y2s7CisJc3RydWN0IGNyeXB0b19za2NpcGhlciAqZmFsbGJhY2s7CiB9OwogCiBzdHJ1Y3Qgc2Fo YXJhX2Flc19yZXFjdHggewogCXVuc2lnbmVkIGxvbmcgbW9kZTsKKwlzdHJ1Y3Qgc2tjaXBoZXJf cmVxdWVzdCBmYWxsYmFja19yZXE7CS8vIGtlZXAgYXQgdGhlIGVuZAogfTsKIAogLyoKQEAgLTYx NywxMCArNjE4LDEwIEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19zZXRrZXkoc3RydWN0IGNyeXB0 b19za2NpcGhlciAqdGZtLCBjb25zdCB1OCAqa2V5LAogCS8qCiAJICogVGhlIHJlcXVlc3RlZCBr ZXkgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEhXLCBkbyBhIGZhbGxiYWNrLgogCSAqLwotCWNy eXB0b19zeW5jX3NrY2lwaGVyX2NsZWFyX2ZsYWdzKGN0eC0+ZmFsbGJhY2ssIENSWVBUT19URk1f UkVRX01BU0spOwotCWNyeXB0b19zeW5jX3NrY2lwaGVyX3NldF9mbGFncyhjdHgtPmZhbGxiYWNr LCB0Zm0tPmJhc2UuY3J0X2ZsYWdzICYKKwljcnlwdG9fc2tjaXBoZXJfY2xlYXJfZmxhZ3MoY3R4 LT5mYWxsYmFjaywgQ1JZUFRPX1RGTV9SRVFfTUFTSyk7CisJY3J5cHRvX3NrY2lwaGVyX3NldF9m bGFncyhjdHgtPmZhbGxiYWNrLCB0Zm0tPmJhc2UuY3J0X2ZsYWdzICYKIAkJCQkJCSBDUllQVE9f VEZNX1JFUV9NQVNLKTsKLQlyZXR1cm4gY3J5cHRvX3N5bmNfc2tjaXBoZXJfc2V0a2V5KGN0eC0+ ZmFsbGJhY2ssIGtleSwga2V5bGVuKTsKKwlyZXR1cm4gY3J5cHRvX3NrY2lwaGVyX3NldGtleShj dHgtPmZhbGxiYWNrLCBrZXksIGtleWxlbik7CiB9CiAKIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19j cnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxLCB1bnNpZ25lZCBsb25nIG1vZGUpCkBA IC02NTEsMjEgKzY1MiwxOSBAQCBzdGF0aWMgaW50IHNhaGFyYV9hZXNfY3J5cHQoc3RydWN0IHNr Y2lwaGVyX3JlcXVlc3QgKnJlcSwgdW5zaWduZWQgbG9uZyBtb2RlKQogCiBzdGF0aWMgaW50IHNh aGFyYV9hZXNfZWNiX2VuY3J5cHQoc3RydWN0IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSkKIHsKKwlz dHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHggKnJjdHggPSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEp OwogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KAogCQljcnlw dG9fc2tjaXBoZXJfcmVxdGZtKHJlcSkpOwotCWludCBlcnI7CiAKIAlpZiAodW5saWtlbHkoY3R4 LT5rZXlsZW4gIT0gQUVTX0tFWVNJWkVfMTI4KSkgewotCQlTWU5DX1NLQ0lQSEVSX1JFUVVFU1Rf T05fU1RBQ0soc3VicmVxLCBjdHgtPmZhbGxiYWNrKTsKLQotCQlza2NpcGhlcl9yZXF1ZXN0X3Nl dF9zeW5jX3RmbShzdWJyZXEsIGN0eC0+ZmFsbGJhY2spOwotCQlza2NpcGhlcl9yZXF1ZXN0X3Nl dF9jYWxsYmFjayhzdWJyZXEsIHJlcS0+YmFzZS5mbGFncywKLQkJCQkJICAgICAgTlVMTCwgTlVM TCk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KHN1YnJlcSwgcmVxLT5zcmMsIHJlcS0+ ZHN0LAotCQkJCQkgICByZXEtPmNyeXB0bGVuLCByZXEtPml2KTsKLQkJZXJyID0gY3J5cHRvX3Nr Y2lwaGVyX2VuY3J5cHQoc3VicmVxKTsKLQkJc2tjaXBoZXJfcmVxdWVzdF96ZXJvKHN1YnJlcSk7 Ci0JCXJldHVybiBlcnI7CisJCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X3RmbSgmcmN0eC0+ZmFsbGJh Y2tfcmVxLCBjdHgtPmZhbGxiYWNrKTsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2so JnJjdHgtPmZhbGxiYWNrX3JlcSwKKwkJCQkJICAgICAgcmVxLT5iYXNlLmZsYWdzLAorCQkJCQkg ICAgICByZXEtPmJhc2UuY29tcGxldGUsCisJCQkJCSAgICAgIHJlcS0+YmFzZS5kYXRhKTsKKwkJ c2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoJnJjdHgtPmZhbGxiYWNrX3JlcSwgcmVxLT5zcmMs CisJCQkJCSAgIHJlcS0+ZHN0LCByZXEtPmNyeXB0bGVuLCByZXEtPml2KTsKKwkJcmV0dXJuIGNy eXB0b19za2NpcGhlcl9lbmNyeXB0KCZyY3R4LT5mYWxsYmFja19yZXEpOwogCX0KIAogCXJldHVy biBzYWhhcmFfYWVzX2NyeXB0KHJlcSwgRkxBR1NfRU5DUllQVCk7CkBAIC02NzMsMjEgKzY3Miwx OSBAQCBzdGF0aWMgaW50IHNhaGFyYV9hZXNfZWNiX2VuY3J5cHQoc3RydWN0IHNrY2lwaGVyX3Jl cXVlc3QgKnJlcSkKIAogc3RhdGljIGludCBzYWhhcmFfYWVzX2VjYl9kZWNyeXB0KHN0cnVjdCBz a2NpcGhlcl9yZXF1ZXN0ICpyZXEpCiB7CisJc3RydWN0IHNhaGFyYV9hZXNfcmVxY3R4ICpyY3R4 ID0gc2tjaXBoZXJfcmVxdWVzdF9jdHgocmVxKTsKIAlzdHJ1Y3Qgc2FoYXJhX2N0eCAqY3R4ID0g Y3J5cHRvX3NrY2lwaGVyX2N0eCgKIAkJY3J5cHRvX3NrY2lwaGVyX3JlcXRmbShyZXEpKTsKLQlp bnQgZXJyOwogCiAJaWYgKHVubGlrZWx5KGN0eC0+a2V5bGVuICE9IEFFU19LRVlTSVpFXzEyOCkp IHsKLQkJU1lOQ19TS0NJUEhFUl9SRVFVRVNUX09OX1NUQUNLKHN1YnJlcSwgY3R4LT5mYWxsYmFj ayk7Ci0KLQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfc3luY190Zm0oc3VicmVxLCBjdHgtPmZhbGxi YWNrKTsKLQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2soc3VicmVxLCByZXEtPmJhc2Uu ZmxhZ3MsCi0JCQkJCSAgICAgIE5VTEwsIE5VTEwpOwotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9j cnlwdChzdWJyZXEsIHJlcS0+c3JjLCByZXEtPmRzdCwKLQkJCQkJICAgcmVxLT5jcnlwdGxlbiwg cmVxLT5pdik7Ci0JCWVyciA9IGNyeXB0b19za2NpcGhlcl9kZWNyeXB0KHN1YnJlcSk7Ci0JCXNr Y2lwaGVyX3JlcXVlc3RfemVybyhzdWJyZXEpOwotCQlyZXR1cm4gZXJyOworCQlza2NpcGhlcl9y ZXF1ZXN0X3NldF90Zm0oJnJjdHgtPmZhbGxiYWNrX3JlcSwgY3R4LT5mYWxsYmFjayk7CisJCXNr Y2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKCZyY3R4LT5mYWxsYmFja19yZXEsCisJCQkJCSAg ICAgIHJlcS0+YmFzZS5mbGFncywKKwkJCQkJICAgICAgcmVxLT5iYXNlLmNvbXBsZXRlLAorCQkJ CQkgICAgICByZXEtPmJhc2UuZGF0YSk7CisJCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KCZy Y3R4LT5mYWxsYmFja19yZXEsIHJlcS0+c3JjLAorCQkJCQkgICByZXEtPmRzdCwgcmVxLT5jcnlw dGxlbiwgcmVxLT5pdik7CisJCXJldHVybiBjcnlwdG9fc2tjaXBoZXJfZGVjcnlwdCgmcmN0eC0+ ZmFsbGJhY2tfcmVxKTsKIAl9CiAKIAlyZXR1cm4gc2FoYXJhX2Flc19jcnlwdChyZXEsIDApOwpA QCAtNjk1LDIxICs2OTIsMTkgQEAgc3RhdGljIGludCBzYWhhcmFfYWVzX2VjYl9kZWNyeXB0KHN0 cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpCiAKIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19jYmNf ZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQogeworCXN0cnVjdCBzYWhhcmFf YWVzX3JlcWN0eCAqcmN0eCA9IHNrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7CiAJc3RydWN0IHNh aGFyYV9jdHggKmN0eCA9IGNyeXB0b19za2NpcGhlcl9jdHgoCiAJCWNyeXB0b19za2NpcGhlcl9y ZXF0Zm0ocmVxKSk7Ci0JaW50IGVycjsKIAogCWlmICh1bmxpa2VseShjdHgtPmtleWxlbiAhPSBB RVNfS0VZU0laRV8xMjgpKSB7Ci0JCVNZTkNfU0tDSVBIRVJfUkVRVUVTVF9PTl9TVEFDSyhzdWJy ZXEsIGN0eC0+ZmFsbGJhY2spOwotCi0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X3N5bmNfdGZtKHN1 YnJlcSwgY3R4LT5mYWxsYmFjayk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKHN1 YnJlcSwgcmVxLT5iYXNlLmZsYWdzLAotCQkJCQkgICAgICBOVUxMLCBOVUxMKTsKLQkJc2tjaXBo ZXJfcmVxdWVzdF9zZXRfY3J5cHQoc3VicmVxLCByZXEtPnNyYywgcmVxLT5kc3QsCi0JCQkJCSAg IHJlcS0+Y3J5cHRsZW4sIHJlcS0+aXYpOwotCQllcnIgPSBjcnlwdG9fc2tjaXBoZXJfZW5jcnlw dChzdWJyZXEpOwotCQlza2NpcGhlcl9yZXF1ZXN0X3plcm8oc3VicmVxKTsKLQkJcmV0dXJuIGVy cjsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfdGZtKCZyY3R4LT5mYWxsYmFja19yZXEsIGN0eC0+ ZmFsbGJhY2spOworCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjaygmcmN0eC0+ZmFsbGJh Y2tfcmVxLAorCQkJCQkgICAgICByZXEtPmJhc2UuZmxhZ3MsCisJCQkJCSAgICAgIHJlcS0+YmFz ZS5jb21wbGV0ZSwKKwkJCQkJICAgICAgcmVxLT5iYXNlLmRhdGEpOworCQlza2NpcGhlcl9yZXF1 ZXN0X3NldF9jcnlwdCgmcmN0eC0+ZmFsbGJhY2tfcmVxLCByZXEtPnNyYywKKwkJCQkJICAgcmVx LT5kc3QsIHJlcS0+Y3J5cHRsZW4sIHJlcS0+aXYpOworCQlyZXR1cm4gY3J5cHRvX3NrY2lwaGVy X2VuY3J5cHQoJnJjdHgtPmZhbGxiYWNrX3JlcSk7CiAJfQogCiAJcmV0dXJuIHNhaGFyYV9hZXNf Y3J5cHQocmVxLCBGTEFHU19FTkNSWVBUIHwgRkxBR1NfQ0JDKTsKQEAgLTcxNywyMSArNzEyLDE5 IEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19jYmNfZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVx dWVzdCAqcmVxKQogCiBzdGF0aWMgaW50IHNhaGFyYV9hZXNfY2JjX2RlY3J5cHQoc3RydWN0IHNr Y2lwaGVyX3JlcXVlc3QgKnJlcSkKIHsKKwlzdHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHggKnJjdHgg PSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOwogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBj cnlwdG9fc2tjaXBoZXJfY3R4KAogCQljcnlwdG9fc2tjaXBoZXJfcmVxdGZtKHJlcSkpOwotCWlu dCBlcnI7CiAKIAlpZiAodW5saWtlbHkoY3R4LT5rZXlsZW4gIT0gQUVTX0tFWVNJWkVfMTI4KSkg ewotCQlTWU5DX1NLQ0lQSEVSX1JFUVVFU1RfT05fU1RBQ0soc3VicmVxLCBjdHgtPmZhbGxiYWNr KTsKLQotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9zeW5jX3RmbShzdWJyZXEsIGN0eC0+ZmFsbGJh Y2spOwotCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayhzdWJyZXEsIHJlcS0+YmFzZS5m bGFncywKLQkJCQkJICAgICAgTlVMTCwgTlVMTCk7Ci0JCXNrY2lwaGVyX3JlcXVlc3Rfc2V0X2Ny eXB0KHN1YnJlcSwgcmVxLT5zcmMsIHJlcS0+ZHN0LAotCQkJCQkgICByZXEtPmNyeXB0bGVuLCBy ZXEtPml2KTsKLQkJZXJyID0gY3J5cHRvX3NrY2lwaGVyX2RlY3J5cHQoc3VicmVxKTsKLQkJc2tj aXBoZXJfcmVxdWVzdF96ZXJvKHN1YnJlcSk7Ci0JCXJldHVybiBlcnI7CisJCXNrY2lwaGVyX3Jl cXVlc3Rfc2V0X3RmbSgmcmN0eC0+ZmFsbGJhY2tfcmVxLCBjdHgtPmZhbGxiYWNrKTsKKwkJc2tj aXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2soJnJjdHgtPmZhbGxiYWNrX3JlcSwKKwkJCQkJICAg ICAgcmVxLT5iYXNlLmZsYWdzLAorCQkJCQkgICAgICByZXEtPmJhc2UuY29tcGxldGUsCisJCQkJ CSAgICAgIHJlcS0+YmFzZS5kYXRhKTsKKwkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoJnJj dHgtPmZhbGxiYWNrX3JlcSwgcmVxLT5zcmMsCisJCQkJCSAgIHJlcS0+ZHN0LCByZXEtPmNyeXB0 bGVuLCByZXEtPml2KTsKKwkJcmV0dXJuIGNyeXB0b19za2NpcGhlcl9kZWNyeXB0KCZyY3R4LT5m YWxsYmFja19yZXEpOwogCX0KIAogCXJldHVybiBzYWhhcmFfYWVzX2NyeXB0KHJlcSwgRkxBR1Nf Q0JDKTsKQEAgLTc0MiwxNCArNzM1LDE1IEBAIHN0YXRpYyBpbnQgc2FoYXJhX2Flc19pbml0X3Rm bShzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0pCiAJY29uc3QgY2hhciAqbmFtZSA9IGNyeXB0 b190Zm1fYWxnX25hbWUoJnRmbS0+YmFzZSk7CiAJc3RydWN0IHNhaGFyYV9jdHggKmN0eCA9IGNy eXB0b19za2NpcGhlcl9jdHgodGZtKTsKIAotCWN0eC0+ZmFsbGJhY2sgPSBjcnlwdG9fYWxsb2Nf c3luY19za2NpcGhlcihuYW1lLCAwLAorCWN0eC0+ZmFsbGJhY2sgPSBjcnlwdG9fYWxsb2Nfc2tj aXBoZXIobmFtZSwgMCwKIAkJCQkJICAgICAgQ1JZUFRPX0FMR19ORUVEX0ZBTExCQUNLKTsKIAlp ZiAoSVNfRVJSKGN0eC0+ZmFsbGJhY2spKSB7CiAJCXByX2VycigiRXJyb3IgYWxsb2NhdGluZyBm YWxsYmFjayBhbGdvICVzXG4iLCBuYW1lKTsKIAkJcmV0dXJuIFBUUl9FUlIoY3R4LT5mYWxsYmFj ayk7CiAJfQogCi0JY3J5cHRvX3NrY2lwaGVyX3NldF9yZXFzaXplKHRmbSwgc2l6ZW9mKHN0cnVj dCBzYWhhcmFfYWVzX3JlcWN0eCkpOworCWNyeXB0b19za2NpcGhlcl9zZXRfcmVxc2l6ZSh0Zm0s IHNpemVvZihzdHJ1Y3Qgc2FoYXJhX2Flc19yZXFjdHgpICsKKwkJCQkJIGNyeXB0b19za2NpcGhl cl9yZXFzaXplKGN0eC0+ZmFsbGJhY2spKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzU4LDcgKzc1 Miw3IEBAIHN0YXRpYyB2b2lkIHNhaGFyYV9hZXNfZXhpdF90Zm0oc3RydWN0IGNyeXB0b19za2Np cGhlciAqdGZtKQogewogCXN0cnVjdCBzYWhhcmFfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJf Y3R4KHRmbSk7CiAKLQljcnlwdG9fZnJlZV9zeW5jX3NrY2lwaGVyKGN0eC0+ZmFsbGJhY2spOwor CWNyeXB0b19mcmVlX3NrY2lwaGVyKGN0eC0+ZmFsbGJhY2spOwogfQogCiBzdGF0aWMgdTMyIHNh aGFyYV9zaGFfaW5pdF9oZHIoc3RydWN0IHNhaGFyYV9kZXYgKmRldiwKLS0gCjIuMTcuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK