From patchwork Tue Jul 18 09:19:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 108072 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp5660414qge; Tue, 18 Jul 2017 02:19:25 -0700 (PDT) X-Received: by 10.99.227.81 with SMTP id o17mr621855pgj.41.1500369564892; Tue, 18 Jul 2017 02:19:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1500369564; cv=none; d=google.com; s=arc-20160816; b=HfhbKj4vSe6MX8LJSY0YSGIyZS2nqOAT3/2zKl/FOPLehs28W/HdjqQqgdvdkvH9iR ZvbTEYl6NqRUcV2f/jb2L7d7uJlxyg1F7vuy7/o2nio0/TCI2OKw83/CVqJPfODCJOYn 1IEJ9E6VtIvMZf0n/DQsutIWAaRbUj6U/KTH1Qxu8nfG7jGKML+BMyNO3ctQ2/wbFjgm G+OvyBKg4hO9ru5oAsgJgUhld8yj/IfF1L3WZD0+rUqnWOHZQ7csXPJc4Bvn2Rpz+b8b HtmFKrgtTrXniWIftFuYBRRVzE+pa8cKt9kMR3lKMX9SxwbBd81dsccMulXDX8L+PKbr pGOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=4doN7q5QDtZqfutfZQi8w9yCPYedwW+KcPoW6dy/528=; b=fjo2Wi4OgpzoZUFsI2IwXS9Y20ZIG7MVTgHRjbjUNEXKzTX52ieCk6QlI0s749CuWV VgUG1iN3C8xdbHUFqCvQV24QOq70hra2yMP0rXZMt2DoBUhbb12L80kUX0bfPaef2DPM 7YTZWZM+E9cJFGCnjenk0YHXlRKrR5ZT7JkvOEIivfXK8eZnFxl6SQ1Q33y0FMduN7oQ 2nvsARCOVKa1zZQhE/Q6Ibuw42IgBVmw8lNnMF/hWLxAyh4xOHDWqPC0oGT2+RkTHnDF m6lHEwGRxwBfTuHVTbfNK3v4Ud45awB7CjFjcvhinjfviPlKtvjfZ5ojiqBlPsxdZ5kT SlYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.b=VWSTUFUj; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m23si1380689plk.369.2017.07.18.02.19.24; Tue, 18 Jul 2017 02:19:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.b=VWSTUFUj; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751434AbdGRJTX (ORCPT + 1 other); Tue, 18 Jul 2017 05:19:23 -0400 Received: from mail-wr0-f170.google.com ([209.85.128.170]:35317 "EHLO mail-wr0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751334AbdGRJTU (ORCPT ); Tue, 18 Jul 2017 05:19:20 -0400 Received: by mail-wr0-f170.google.com with SMTP id w4so19725928wrb.2 for ; Tue, 18 Jul 2017 02:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=4doN7q5QDtZqfutfZQi8w9yCPYedwW+KcPoW6dy/528=; b=VWSTUFUjkMCw2xPgdZpgguNC8z/wV7QJFpbH4KyNxJSVMrHWo30smLDMYGMURTBrly fMeX72cv6Fqs7t60u/kvyGGf+XoODn7NTJam9yrDhMu7Obl66LMYQcfJpB9xhyUV3iJY A9FSRtxbIwExNKW4zD5cNN1DNZPosfVeCLWTE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=4doN7q5QDtZqfutfZQi8w9yCPYedwW+KcPoW6dy/528=; b=tK9UhJ+52Dbm0jKcG7xkz5Cvb6m6RFVGNXsO5EhqOiwXU6wG6O0h2a3XTubT4btQPh Jg/9gtHt97fOBvqH5R5vgWVYhN0iWAEfk7k6rkwRsZ8EIPhSHLU3oCDYK82FbKAN/qT0 JRHbRXsoygopPCwDcxEBMsD0c02trNbxahSVef7R8MhYyjvBjRJZzD32ci0/4Y6TufM9 afd3+mMDLYBtotqx5o5yJus9eYsOaO/r+DFzoy6pAl0EYKQeEIbl6ovWItU3lgObtSOR OvJGjeVpQ9pwkuirZC8WCtnHzAzYLUZ0ZFWmx5DcPLnB+KlEwl6JF/rnh31Tpuc7bpap Kq1w== X-Gm-Message-State: AIVw111Rqefx8ElhVWyh/SZT6OB80l1morltatoXs1DDUqjkQV8J4fLW gIfzajdmZJOsqs43 X-Received: by 10.28.211.7 with SMTP id k7mr1371282wmg.1.1500369559395; Tue, 18 Jul 2017 02:19:19 -0700 (PDT) Received: from localhost.localdomain ([154.145.198.181]) by smtp.gmail.com with ESMTPSA id k45sm1133024wrk.45.2017.07.18.02.19.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Jul 2017 02:19:18 -0700 (PDT) From: Ard Biesheuvel To: linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au Cc: ebiggers@google.com, davem@davemloft.net, dm-devel@redhat.com, johannes@sipsolutions.net, linux-wireless@vger.kernel.org, agk@redhat.com, snitzer@redhat.com, Ard Biesheuvel Subject: [PATCH v2 0/2] crypto/algapi - refactor crypto_xor() to avoid memcpy()s Date: Tue, 18 Jul 2017 10:19:10 +0100 Message-Id: <20170718091912.14104-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.9.3 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org >From 2/2: """ There are quite a number of occurrences in the kernel of the pattern if (dst != src) memcpy(dst, src, walk.total % AES_BLOCK_SIZE); crypto_xor(dst, final, walk.total % AES_BLOCK_SIZE); or crypto_xor(keystream, src, nbytes); memcpy(dst, keystream, nbytes); where crypto_xor() is preceded or followed by a memcpy() invocation that is only there because crypto_xor() uses its output parameter as one of the inputs. """ Patch #1 is a preparatory patch, which is split off for ease of review. Patch #2 updates all occurrences of crypto_xor() involving a memcpy() to use a new API function crypto_xor_cpy() which combines the two operations. v2: - keep existing crypto_xor() as-is, and add crypto_xor_cpy() for the cases where a redundant memcpy() can be eliminated. Ard Biesheuvel (2): crypto/algapi - use separate dst and src operands for __crypto_xor() crypto/algapi - make crypto_xor() take separate dst and src arguments arch/arm/crypto/aes-ce-glue.c | 4 +--- arch/arm/crypto/aes-neonbs-glue.c | 5 ++-- arch/arm64/crypto/aes-glue.c | 4 +--- arch/arm64/crypto/aes-neonbs-glue.c | 5 ++-- arch/sparc/crypto/aes_glue.c | 3 +-- arch/x86/crypto/aesni-intel_glue.c | 4 ++-- arch/x86/crypto/blowfish_glue.c | 3 +-- arch/x86/crypto/cast5_avx_glue.c | 3 +-- arch/x86/crypto/des3_ede_glue.c | 3 +-- crypto/algapi.c | 25 ++++++++++++-------- crypto/ctr.c | 3 +-- crypto/pcbc.c | 12 ++++------ drivers/crypto/vmx/aes_ctr.c | 3 +-- drivers/md/dm-crypt.c | 11 ++++----- include/crypto/algapi.h | 23 ++++++++++++++++-- 15 files changed, 59 insertions(+), 52 deletions(-) -- 2.9.3