On Tue, Aug 13, 2019 at 09:33:33AM +0200, Michael Olbrich wrote:
> On Mon, Aug 12, 2019 at 03:19:52PM +0200, Ladislav Michl wrote:
> > 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 <[email protected]>
> 
> Please update to the latest kernel module template.

One more question. Header required by openssl and gnutls is copied
during targetinstall stage. Shall we do it manually inside install stage
to satisfy dependencies?

From: Ladislav Michl <[email protected]>
Date: Thu, 22 Jun 2017 23:01:10 +0200
Subject: [PATCH v3 1/3] cryptodev: new package

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 <[email protected]>
---
 Changes:
 - v2: update to 1.10, add upstream git patch.
 - v3: updated to the latest module template

 ...x-module-loading-with-Linux-v5.0-rc5.patch | 58 +++++++++++++++
 patches/cryptodev-linux-1.10/series           |  1 +
 rules/cryptodev.in                            | 11 +++
 rules/cryptodev.make                          | 74 +++++++++++++++++++
 4 files changed, 144 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 <[email protected]>
+
+From f971e0cd4a0ebe59fb2e8e17240399bf6901b09b Mon Sep 17 00:00:00 2001
+From: "Derald D. Woods" <[email protected]>
+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 <[email protected]>
+---
+ 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..132f924e2
--- /dev/null
+++ b/rules/cryptodev.make
@@ -0,0 +1,74 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2017, 2019 by Ladislav Michl <[email protected]>
+#
+# 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
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.compile:
+       @$(call targetinfo)
+       $(KERNEL_PATH) $(KERNEL_ENV) $(MAKE) $(KERNEL_MAKE_OPT) \
+               KERNEL_DIR=$(KERNEL_DIR) \
+               -C $(CRYPTODEV_DIR)
+       @$(call touch)
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.install:
+       @$(call targetinfo)
+       @$(call touch)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.targetinstall:
+       @$(call targetinfo)
+       $(KERNEL_PATH) $(KERNEL_ENV) $(MAKE) $(KERNEL_MAKE_OPT) \
+               KERNEL_DIR=$(KERNEL_DIR) \
+               DESTDIR=$(SYSROOT) \
+               prefix=/usr \
+               -C $(CRYPTODEV_DIR) \
+               install
+       @$(call touch)
+
+# vim: syntax=make
-- 
2.22.0


_______________________________________________
ptxdist mailing list
[email protected]

Reply via email to