forked from pool/openafs
cfa65eea8c
- update to openafs-1.8.11 - apply upstream patches for kernel 6.8 * 056a7a8.diff * 05ac614.diff * 073adec.diff * 0d9f6cf.diff * 0e983a9.diff * 112fb94.diff * 1e1bf8e.diff * 2056ce8.diff * 5312d06.diff * 67e48c8.diff * 6b20756.diff * 743d72f.diff * 7cae97b.diff * 81b910a.diff * 87ab04a.diff * 9f052c1.diff * a14a9ad.diff * a87845d.diff * aae8b00.diff * b77b304.diff * d1c89ac.diff * d9f3a2c.diff * db91384.diff * dffd0e1.diff * e0f425a.diff * e157f8f.diff * e428053.diff * ef7b8c5.diff * f5bafb0.diff * fca6fd9.diff OBS-URL: https://build.opensuse.org/request/show/1170220 OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=123
90 lines
3.1 KiB
Diff
90 lines
3.1 KiB
Diff
From d1c89acf70a794b78c5daaff206d734e36bbec6d Mon Sep 17 00:00:00 2001
|
|
From: Andrew Deason <adeason@sinenomine.net>
|
|
Date: Tue, 30 Jan 2024 20:44:48 -0600
|
|
Subject: [PATCH] roken: Declare ct_memcmp in hcrypto kernel roken.h
|
|
|
|
Currently, we build roken's ct.c for our kernel module to provide
|
|
ct_memcmp(). We declare a prototype for ct_memcmp() in krb5_locl.h,
|
|
and all of our kernel callers of ct_memcmp() include krb5_locl.h, so
|
|
all callers get a prototype and avoid "implicit declaration" compiler
|
|
warnings.
|
|
|
|
However, roken's ct.c itself does not include krb5_locl.h, so it
|
|
doesn't get a prototype for ct_memcmp(). This is dangerous, since if
|
|
the prototype ever slightly differs from the implementation for any
|
|
reason, it could cause a variety of issues.
|
|
|
|
This also causes warnings when building against a Linux 6.8 kernel
|
|
(which sets the -Wmissing-declarations and -Wmissing-prototypes
|
|
compiler flags as default). Linux 6.8 commit:
|
|
'Makefile.extrawarn: turn on missing-prototypes globally' (0fcb70851f).
|
|
|
|
When building against a kernel with CONFIG_WERROR=y, the build fails.
|
|
|
|
We cannot change ct.c, since it is an external source file. To fix
|
|
this, instead move the prototype of ct_memcmp() to our stub
|
|
kernel-only roken.h header, which is included by ct.c. Make
|
|
krb5_locl.h also include roken.h when building kernel code, so all of
|
|
the ct_memcmp() callers also get the prototype.
|
|
|
|
While we're here, add some informative comments and an include guard
|
|
to our previously-blank roken.h stub.
|
|
|
|
Written in collaboration with cwills@sinenomine.net.
|
|
|
|
Reviewed-on: https://gerrit.openafs.org/15620
|
|
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
|
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
|
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
|
(cherry picked from commit be236069e9d26339ed5f9939965bca0dd3f8bf4e)
|
|
|
|
Change-Id: I1112881938b0585263871f8f83d63b8909b12f0d
|
|
---
|
|
|
|
diff --git a/src/crypto/hcrypto/kernel/roken.h b/src/crypto/hcrypto/kernel/roken.h
|
|
index e69de29..f8c2334 100644
|
|
--- a/src/crypto/hcrypto/kernel/roken.h
|
|
+++ b/src/crypto/hcrypto/kernel/roken.h
|
|
@@ -0,0 +1,17 @@
|
|
+#ifndef OPENAFS_HCRYPTO_KERNEL_ROKEN_H
|
|
+#define OPENAFS_HCRYPTO_KERNEL_ROKEN_H
|
|
+
|
|
+/*
|
|
+ * This is a stub roken.h used for building roken code (or roken-using code) in
|
|
+ * the kernel. For userspace code, use a real roken.h. This just contains a few
|
|
+ * prototypes of roken functions we actually use in kernel code.
|
|
+ */
|
|
+
|
|
+#ifndef KERNEL
|
|
+# error "This header is for kernel code only"
|
|
+#endif
|
|
+
|
|
+/* ct.c */
|
|
+int ct_memcmp(const void *p1, const void *p2, size_t len);
|
|
+
|
|
+#endif /* OPENAFS_HCRYPTO_KERNEL_ROKEN_H */
|
|
diff --git a/src/crypto/rfc3961/krb5_locl.h b/src/crypto/rfc3961/krb5_locl.h
|
|
index eb279a9..6e70673 100644
|
|
--- a/src/crypto/rfc3961/krb5_locl.h
|
|
+++ b/src/crypto/rfc3961/krb5_locl.h
|
|
@@ -5,6 +5,7 @@
|
|
#ifdef KERNEL
|
|
|
|
#include "config.h"
|
|
+#include <roken.h>
|
|
|
|
#else
|
|
#include <afsconfig.h>
|
|
@@ -285,11 +286,6 @@
|
|
krb5_error_code krb5_enctype_to_string(krb5_context context,
|
|
krb5_enctype etype,
|
|
char **string);
|
|
-#ifdef KERNEL
|
|
-/* Roken provides this in userspace, but we're on our own in the kernel. */
|
|
-int ct_memcmp(const void *p1, const void *p2, size_t len);
|
|
-#endif
|
|
-
|
|
|
|
#include "crypto.h"
|
|
|