+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Qingfang Deng <dqfext@gmail.com>
+Date: Fri, 17 Jul 2026 09:58:01 +0800
Subject: [PATCH] do not use EIP-197
ovpn-dco is currently incompatible with the SafeXcel EIP-197
pr_err("%s crypto_alloc_aead failed, err=%d\n", title, ret);
--- a/drivers/net/ovpn/io.c
+++ b/drivers/net/ovpn/io.c
-@@ -98,6 +98,9 @@ static void ovpn_netdev_write(struct ovp
- }
+@@ -105,6 +105,9 @@ static void ovpn_netdev_write(struct ovp
+ local_bh_enable();
}
+#if IS_ENABLED(CONFIG_CRYPTO_DEV_SAFEXCEL)
void ovpn_decrypt_post(void *data, int ret)
{
struct ovpn_crypto_key_slot *ks;
-@@ -108,11 +111,13 @@ void ovpn_decrypt_post(void *data, int r
+@@ -115,11 +118,13 @@ void ovpn_decrypt_post(void *data, int r
__be16 proto;
__be32 *pid;
payload_offset = ovpn_skb_cb(skb)->payload_offset;
ks = ovpn_skb_cb(skb)->ks;
-@@ -228,6 +233,9 @@ void ovpn_recv(struct ovpn_peer *peer, s
+@@ -235,6 +240,9 @@ void ovpn_recv(struct ovpn_peer *peer, s
ovpn_decrypt_post(skb, ovpn_aead_decrypt(peer, ks, skb));
}
void ovpn_encrypt_post(void *data, int ret)
{
struct ovpn_crypto_key_slot *ks;
-@@ -236,11 +244,13 @@ void ovpn_encrypt_post(void *data, int r
+@@ -243,11 +251,13 @@ void ovpn_encrypt_post(void *data, int r
struct ovpn_peer *peer;
unsigned int orig_len;
+++ /dev/null
-Subject: [PATCH] undef kmalloc_obj macros
-
-Kernel version 6.18.33 backports kmalloc_obj macros but GFP flags are
-required, which causes build failures as ovpn omits GFP flags. Undef
-those macros to fix the build.
-
-https://github.com/OpenVPN/ovpn-backports/issues/21
-
---- a/compat-include/linux/slab.h
-+++ b/compat-include/linux/slab.h
-@@ -4,15 +4,14 @@
- #include <linux/version.h>
- #include_next <linux/slab.h>
-
--#ifndef __alloc_objs
-+#undef __alloc_objs
- #define __alloc_objs(KMALLOC, GFP, TYPE, COUNT) \
- ({ \
- const size_t __obj_size = size_mul(sizeof(TYPE), COUNT); \
- (TYPE *)KMALLOC(__obj_size, GFP); \
- })
--#endif /* __alloc_objs */
-
--#ifndef __alloc_flex
-+#undef __alloc_flex
- #define __alloc_flex(KMALLOC, GFP, TYPE, FAM, COUNT) \
- ({ \
- const size_t __count = (COUNT); \
-@@ -22,66 +21,53 @@
- __set_flex_counter(__obj_ptr->FAM, __count); \
- __obj_ptr; \
- })
--#endif /* __alloc_flex */
-
--#ifndef kmalloc_obj
-+#undef kmalloc_obj
- #define kmalloc_obj(VAR_OR_TYPE, ...) \
- __alloc_objs(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), 1)
--#endif /* kmalloc_obj */
-
--#ifndef kmalloc_objs
-+#undef kmalloc_objs
- #define kmalloc_objs(VAR_OR_TYPE, COUNT, ...) \
- __alloc_objs(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), COUNT)
--#endif /* kmalloc_objs */
-
--#ifndef kmalloc_flex
-+#undef kmalloc_flex
- #define kmalloc_flex(VAR_OR_TYPE, FAM, COUNT, ...) \
- __alloc_flex(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), FAM, COUNT)
--#endif /* kmalloc_flex */
-
--#ifndef kzalloc_obj
-+#undef kzalloc_obj
- #define kzalloc_obj(P, ...) \
- __alloc_objs(kzalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
--#endif /* kzalloc_obj */
-
--#ifndef kzalloc_objs
-+#undef kzalloc_objs
- #define kzalloc_objs(P, COUNT, ...) \
- __alloc_objs(kzalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
--#endif /* kzalloc_objs */
-
--#ifndef kzalloc_flex
-+#undef kzalloc_flex
- #define kzalloc_flex(P, FAM, COUNT, ...) \
- __alloc_flex(kzalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
--#endif /* kzalloc_flex */
-
--#ifndef kvmalloc_obj
-+#undef kvmalloc_obj
- #define kvmalloc_obj(P, ...) \
- __alloc_objs(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
--#endif /* kvmalloc_obj */
-
--#ifndef kvmalloc_objs
-+#undef kvmalloc_objs
- #define kvmalloc_objs(P, COUNT, ...) \
- __alloc_objs(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
--#endif /* kvmalloc_objs */
-
--#ifndef kvmalloc_flex
-+#undef kvmalloc_flex
- #define kvmalloc_flex(P, FAM, COUNT, ...) \
- __alloc_flex(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
--#endif /* kvmalloc_flex */
-
--#ifndef kvzalloc_obj
-+#undef kvzalloc_obj
- #define kvzalloc_obj(P, ...) \
- __alloc_objs(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
--#endif /* kvzalloc_obj */
-
--#ifndef kvzalloc_objs
-+#undef kvzalloc_objs
- #define kvzalloc_objs(P, COUNT, ...) \
- __alloc_objs(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
--#endif /* kvzalloc_objs */
-
--#ifndef kvzalloc_flex
-+#undef kvzalloc_flex
- #define kvzalloc_flex(P, FAM, COUNT, ...) \
- __alloc_flex(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
--#endif /* kvzalloc_flex */
-
- #endif /* _NET_OVPN_LINUX_SLAB_H_ */