From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from eddie.linux-mips.org ([148.251.95.138] helo=cvs.linux-mips.org) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1hxUh9-0007by-M6 for ptxdist@pengutronix.de; Tue, 13 Aug 2019 13:10:28 +0200 Received: (from localhost user: 'ladis' uid#1021 fake: STDIN (ladis@eddie.linux-mips.org)) by eddie.linux-mips.org id S23991197AbfHMLKZy8vqS (ORCPT ); Tue, 13 Aug 2019 13:10:25 +0200 Date: Tue, 13 Aug 2019 13:10:24 +0200 From: Ladislav Michl Message-ID: <20190813111024.GA9155@lenoch> MIME-Version: 1.0 Content-Disposition: inline Subject: [ptxdist] [PATCH v4] cryptodev: new package List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de Cryptodev-linux is a device that allows access to Linux kernel cryptographic drivers; thus allowing of userspace applications to take advantage of hardware accelerators. Cryptodev-linux is implemented as a standalone module that requires no dependencies other than a stock linux kernel. Its API is compatible with OpenBSD's cryptodev userspace API (/dev/crypto). Signed-off-by: Ladislav Michl --- Changes: - v2: update to 1.10, add upstream git patch. - v3: updated to the latest module template - v4: install stage copies cryptodev.h ...x-module-loading-with-Linux-v5.0-rc5.patch | 58 +++++++++++++++ patches/cryptodev-linux-1.10/series | 1 + rules/cryptodev.in | 11 +++ rules/cryptodev.make | 71 +++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch create mode 100644 patches/cryptodev-linux-1.10/series create mode 100644 rules/cryptodev.in create mode 100644 rules/cryptodev.make diff --git a/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch b/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch new file mode 100644 index 000000000..a201d0290 --- /dev/null +++ b/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch @@ -0,0 +1,58 @@ +Upstream-Status: Backport [https://github.com/cryptodev-linux/cryptodev-linux/commit/f971e0c] + +Backport patch from upstream to fix module cryptodev loading error. + +Signed-off-by: Kai Kang + +From f971e0cd4a0ebe59fb2e8e17240399bf6901b09b Mon Sep 17 00:00:00 2001 +From: "Derald D. Woods" +Date: Sun, 10 Feb 2019 13:22:19 -0600 +Subject: [PATCH] Fix module loading with Linux v5.0-rc5 + +This commit fixes this module load error: +[...] +[ 29.112091] cryptodev: loading out-of-tree module taints kernel. +[ 29.128906] cryptodev: Unknown symbol crypto_givcipher_type (err -2) +[ 29.188842] cryptodev: Unknown symbol crypto_givcipher_type (err -2) +modprobe: can't load module cryptodev (extra/cryptodev.ko): unknown symbol in module, or unknown parameter +[...] + +Upstream Linux support for unused GIVCIPHER, and others, was dropped here: + +c79b411eaa72 (crypto: skcipher - remove remnants of internal IV generators) + +Signed-off-by: Derald D. Woods +--- + cryptlib.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/cryptlib.c b/cryptlib.c +index 6e66698..4a87037 100644 +--- a/cryptlib.c ++++ b/cryptlib.c +@@ -38,7 +38,9 @@ + #include "cryptodev_int.h" + #include "cipherapi.h" + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) + extern const struct crypto_type crypto_givcipher_type; ++#endif + + static void cryptodev_complete(struct crypto_async_request *req, int err) + { +@@ -157,8 +159,11 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, + + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)) + tfm = crypto_skcipher_tfm(out->async.s); +- if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) || +- (tfm->__crt_alg->cra_type == &crypto_givcipher_type)) { ++ if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) ++ || (tfm->__crt_alg->cra_type == &crypto_givcipher_type) ++#endif ++ ) { + struct ablkcipher_alg *alg; + + alg = &tfm->__crt_alg->cra_ablkcipher; +-- +2.20.0 diff --git a/patches/cryptodev-linux-1.10/series b/patches/cryptodev-linux-1.10/series new file mode 100644 index 000000000..fa320b645 --- /dev/null +++ b/patches/cryptodev-linux-1.10/series @@ -0,0 +1 @@ +0001-Fix-module-loading-with-Linux-v5.0-rc5.patch diff --git a/rules/cryptodev.in b/rules/cryptodev.in new file mode 100644 index 000000000..7a231340e --- /dev/null +++ b/rules/cryptodev.in @@ -0,0 +1,11 @@ +## SECTION=core + +config CRYPTODEV + tristate + select KERNEL + prompt "cryptodev" + help + Cryptodev-linux is a device that allows access to Linux kernel + cryptographic drivers; thus allowing of userspace applications + to take advantage of hardware accelerators. Its API is + compatible with OpenBSD's cryptodev userspace API (/dev/crypto). diff --git a/rules/cryptodev.make b/rules/cryptodev.make new file mode 100644 index 000000000..202ca6bef --- /dev/null +++ b/rules/cryptodev.make @@ -0,0 +1,71 @@ +# -*-makefile-*- +# +# Copyright (C) 2017, 2019 by Ladislav Michl +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +PACKAGES-$(PTXCONF_CRYPTODEV) += cryptodev + +# +# Paths and names and versions +# +CRYPTODEV_VERSION := 1.10 +CRYPTODEV_MD5 := 53403fbb99cd88a48bc899dbe9158e1c +CRYPTODEV := cryptodev-linux-$(CRYPTODEV_VERSION) +CRYPTODEV_SUFFIX := tar.gz +CRYPTODEV_URL := \ + https://github.com/cryptodev-linux/cryptodev-linux/archive/$(CRYPTODEV).$(CRYPTODEV_SUFFIX) +CRYPTODEV_SOURCE := $(SRCDIR)/$(CRYPTODEV).$(CRYPTODEV_SUFFIX) +CRYPTODEV_DIR := $(BUILDDIR)/$(CRYPTODEV) +CRYPTODEV_LICENSE := GPL-2.0 + +ifdef PTXCONF_CRYPTODEV +$(STATEDIR)/kernel.targetinstall.post: $(STATEDIR)/cryptodev.targetinstall +endif + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +CRYPTODEV_WRAPPER_BLACKLIST = $(KERNEL_WRAPPER_BLACKLIST) + +CRYPTODEV_CONF_TOOL := NO + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +CRYPTODEV_MAKE_OPT = \ + $(KERNEL_MAKE_OPT) \ + KERNEL_DIR=$(KERNEL_DIR) \ + DESTDIR=$(SYSROOT) \ + prefix=/usr \ + -C $(CRYPTODEV_DIR) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/cryptodev.install: + @$(call targetinfo) + @install -m644 -D $(CRYPTODEV_DIR)/crypto/cryptodev.h \ + $(SYSROOT)/usr/include/crypto/cryptodev.h + @$(call touch) + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/cryptodev.targetinstall: + @$(call targetinfo) + @$(call compile, CRYPTODEV, $(CRYPTODEV_MAKE_OPT) install) + @$(call touch) + +# vim: syntax=make -- 2.22.0 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de