mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-07-26 00:45:46 +02:00
1.8.13-r2 1.8.13.1-r1 1.8.13.2-r1 Closes: https://bugs.gentoo.org/949491 Signed-off-by: Cheyenne Wills <cwills@witznd.net> Closes: https://github.com/gentoo/gentoo/pull/40410 Signed-off-by: Sam James <sam@gentoo.org>
215 lines
8.2 KiB
Diff
215 lines
8.2 KiB
Diff
From ed1e72e2a3aecd894ca1a029996ef70846e30781 Mon Sep 17 00:00:00 2001
|
||
From: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Tue, 25 Feb 2025 20:09:12 -0700
|
||
Subject: [PATCH 2/2] afs: Init structures via designated initializers
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
When the Linux kernel is configured with CONFIG_RANDSTRUCT=y, the
|
||
following error occurs when building the openafs kernel module:
|
||
|
||
src/libafs/MODLOAD-6.12.0-SP/rand-timer-kernel.c:46:5: error: positional initialization of field in ‘struct’ declared with ‘designated_init’ attribute [-Werror=designated-init]
|
||
46 | timer_seed,
|
||
| ^~~~~~~~~~
|
||
|
||
When the Linux kernel is configured with CONFIG_RANDSTRUCT=y, the Linux
|
||
build uses a Linux kernel-specific GCC plugin
|
||
(scripts/gcc-plugins/randomize_layout_plugin.c) that analyzes structures
|
||
and will add the designated_init attribute to any structure that is
|
||
determined to be a "pure operations struct" (i.e. contains only function
|
||
pointers or nested pure ops structs/unions). This is done so the plugin
|
||
can then randomize the layout. This causes some of our structures to be
|
||
flagged with the designated_init attribute, which triggers
|
||
-Werror=designated-init when we don't use designated initializers.
|
||
|
||
Within the Linux specific directory, src/afs/LINUX, the code already
|
||
uses designated initializers, however some of the shared code within
|
||
src/afs or that is included in the build for the kernel module still use
|
||
positional initialization when initializing pure operations structures.
|
||
|
||
Update the shared code that is used when building the Linux kernel
|
||
module to use designated initializers via the AFS_STRUCT_INIT macro.
|
||
|
||
Use a consistent alignment, and add trailing comma on the last
|
||
element, change 0 to NULL where applicable.
|
||
|
||
There are no functional changes within this commit.
|
||
|
||
Note: For consistency, all the initializers for rx_securityOps are being
|
||
updated even though not all of the files are part of the Linux kernel
|
||
module (e.g. rxkad_server.c).
|
||
|
||
Note: This error was discovered by an automated process that is used
|
||
by the Gentoo organization to test building packages with a hardened
|
||
Linux kernel.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/16290
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: Andrew Deason <adeason@sinenomine.net>
|
||
(cherry picked from commit e94c183faef42e5ffe85c157ede008f2817bdefd)
|
||
|
||
[cwills@sinenomine.net changes to rxgk not applicable to 1.8.x]
|
||
|
||
Change-Id: I56ebb7d34718eef6c5bfbba98e3fb4e350a5129f
|
||
---
|
||
src/afs/afs_fetchstore.c | 20 ++++++++---------
|
||
src/crypto/hcrypto/kernel/rand-timer.c | 14 ++++++------
|
||
src/rxkad/rxkad_client.c | 30 +++++++++++++-------------
|
||
src/rxkad/rxkad_server.c | 30 +++++++++++++-------------
|
||
4 files changed, 47 insertions(+), 47 deletions(-)
|
||
|
||
diff --git a/src/afs/afs_fetchstore.c b/src/afs/afs_fetchstore.c
|
||
index 5baf371a2c6a..5b9e08c3fdec 100644
|
||
--- a/src/afs/afs_fetchstore.c
|
||
+++ b/src/afs/afs_fetchstore.c
|
||
@@ -844,20 +844,20 @@ rxfs_fetchMore(void *r, afs_int32 *length, afs_uint32 *moredata)
|
||
|
||
static
|
||
struct fetchOps rxfs_fetchUfsOps = {
|
||
- rxfs_fetchMore,
|
||
- rxfs_fetchUfsRead,
|
||
- rxfs_fetchUfsWrite,
|
||
- rxfs_fetchClose,
|
||
- rxfs_fetchDestroy
|
||
+ AFS_STRUCT_INIT(.more, rxfs_fetchMore),
|
||
+ AFS_STRUCT_INIT(.read, rxfs_fetchUfsRead),
|
||
+ AFS_STRUCT_INIT(.write, rxfs_fetchUfsWrite),
|
||
+ AFS_STRUCT_INIT(.close, rxfs_fetchClose),
|
||
+ AFS_STRUCT_INIT(.destroy, rxfs_fetchDestroy),
|
||
};
|
||
|
||
static
|
||
struct fetchOps rxfs_fetchMemOps = {
|
||
- rxfs_fetchMore,
|
||
- rxfs_fetchMemRead,
|
||
- rxfs_fetchMemWrite,
|
||
- rxfs_fetchClose,
|
||
- rxfs_fetchDestroy
|
||
+ AFS_STRUCT_INIT(.more, rxfs_fetchMore),
|
||
+ AFS_STRUCT_INIT(.read, rxfs_fetchMemRead),
|
||
+ AFS_STRUCT_INIT(.write, rxfs_fetchMemWrite),
|
||
+ AFS_STRUCT_INIT(.close, rxfs_fetchClose),
|
||
+ AFS_STRUCT_INIT(.destroy, rxfs_fetchDestroy),
|
||
};
|
||
|
||
static afs_int32
|
||
diff --git a/src/crypto/hcrypto/kernel/rand-timer.c b/src/crypto/hcrypto/kernel/rand-timer.c
|
||
index 3a7023555b67..6ef71737cdeb 100644
|
||
--- a/src/crypto/hcrypto/kernel/rand-timer.c
|
||
+++ b/src/crypto/hcrypto/kernel/rand-timer.c
|
||
@@ -5,7 +5,7 @@
|
||
* Contains no copyrightable content.
|
||
*/
|
||
#include <config.h>
|
||
-
|
||
+#include <stds.h>
|
||
#include <rand.h>
|
||
#include "randi.h"
|
||
|
||
@@ -43,12 +43,12 @@ timer_status(void)
|
||
}
|
||
|
||
const RAND_METHOD hc_rand_timer_method = {
|
||
- timer_seed,
|
||
- timer_bytes,
|
||
- timer_cleanup,
|
||
- timer_add,
|
||
- timer_pseudorand,
|
||
- timer_status
|
||
+ AFS_STRUCT_INIT(.seed, timer_seed),
|
||
+ AFS_STRUCT_INIT(.bytes, timer_bytes),
|
||
+ AFS_STRUCT_INIT(.cleanup, timer_cleanup),
|
||
+ AFS_STRUCT_INIT(.add, timer_add),
|
||
+ AFS_STRUCT_INIT(.pseudorand, timer_pseudorand),
|
||
+ AFS_STRUCT_INIT(.status, timer_status),
|
||
};
|
||
|
||
const RAND_METHOD *
|
||
diff --git a/src/rxkad/rxkad_client.c b/src/rxkad/rxkad_client.c
|
||
index 1f760b8c0e66..79ea0cf586b3 100644
|
||
--- a/src/rxkad/rxkad_client.c
|
||
+++ b/src/rxkad/rxkad_client.c
|
||
@@ -50,21 +50,21 @@
|
||
#endif /* max */
|
||
|
||
static struct rx_securityOps rxkad_client_ops = {
|
||
- rxkad_Close,
|
||
- rxkad_NewConnection, /* every new connection */
|
||
- rxkad_PreparePacket, /* once per packet creation */
|
||
- 0, /* send packet (once per retrans.) */
|
||
- 0,
|
||
- 0,
|
||
- 0,
|
||
- rxkad_GetResponse, /* respond to challenge packet */
|
||
- 0,
|
||
- rxkad_CheckPacket, /* check data packet */
|
||
- rxkad_DestroyConnection,
|
||
- rxkad_GetStats,
|
||
- 0,
|
||
- 0,
|
||
- 0,
|
||
+ AFS_STRUCT_INIT(.op_Close, rxkad_Close),
|
||
+ AFS_STRUCT_INIT(.op_NewConnection, rxkad_NewConnection), /* every new connection */
|
||
+ AFS_STRUCT_INIT(.op_PreparePacket, rxkad_PreparePacket), /* once per packet creation */
|
||
+ AFS_STRUCT_INIT(.op_SendPacket, NULL), /* send packet (once per retrans.) */
|
||
+ AFS_STRUCT_INIT(.op_CheckAuthentication, NULL),
|
||
+ AFS_STRUCT_INIT(.op_CreateChallenge, NULL),
|
||
+ AFS_STRUCT_INIT(.op_GetChallenge, NULL),
|
||
+ AFS_STRUCT_INIT(.op_GetResponse, rxkad_GetResponse), /* respond to challenge packet */
|
||
+ AFS_STRUCT_INIT(.op_CheckResponse, NULL),
|
||
+ AFS_STRUCT_INIT(.op_CheckPacket, rxkad_CheckPacket), /* check data packet */
|
||
+ AFS_STRUCT_INIT(.op_DestroyConnection, rxkad_DestroyConnection),
|
||
+ AFS_STRUCT_INIT(.op_GetStats, rxkad_GetStats),
|
||
+ AFS_STRUCT_INIT(.op_SetConfiguration, NULL),
|
||
+ AFS_STRUCT_INIT(.op_Spare2, NULL),
|
||
+ AFS_STRUCT_INIT(.op_Spare3, NULL),
|
||
};
|
||
|
||
/* Allocate a new client security object. Called with the encryption level,
|
||
diff --git a/src/rxkad/rxkad_server.c b/src/rxkad/rxkad_server.c
|
||
index 07e806bcdf36..766904cea562 100644
|
||
--- a/src/rxkad/rxkad_server.c
|
||
+++ b/src/rxkad/rxkad_server.c
|
||
@@ -43,21 +43,21 @@ afs_int32(*rxkad_AlternateTicketDecoder) (afs_int32, char *, afs_int32,
|
||
afs_uint32 *);
|
||
|
||
static struct rx_securityOps rxkad_server_ops = {
|
||
- rxkad_Close,
|
||
- rxkad_NewConnection,
|
||
- rxkad_PreparePacket, /* once per packet creation */
|
||
- 0, /* send packet (once per retrans) */
|
||
- rxkad_CheckAuthentication,
|
||
- rxkad_CreateChallenge,
|
||
- rxkad_GetChallenge,
|
||
- 0,
|
||
- rxkad_CheckResponse,
|
||
- rxkad_CheckPacket, /* check data packet */
|
||
- rxkad_DestroyConnection,
|
||
- rxkad_GetStats,
|
||
- rxkad_SetConfiguration,
|
||
- 0, /* spare 2 */
|
||
- 0, /* spare 3 */
|
||
+ AFS_STRUCT_INIT(.op_Close, rxkad_Close),
|
||
+ AFS_STRUCT_INIT(.op_NewConnection, rxkad_NewConnection),
|
||
+ AFS_STRUCT_INIT(.op_PreparePacket, rxkad_PreparePacket), /* once per packet creation */
|
||
+ AFS_STRUCT_INIT(.op_SendPacket, NULL), /* send packet (once per retrans) */
|
||
+ AFS_STRUCT_INIT(.op_CheckAuthentication, rxkad_CheckAuthentication),
|
||
+ AFS_STRUCT_INIT(.op_CreateChallenge, rxkad_CreateChallenge),
|
||
+ AFS_STRUCT_INIT(.op_GetChallenge, rxkad_GetChallenge),
|
||
+ AFS_STRUCT_INIT(.op_GetResponse, NULL),
|
||
+ AFS_STRUCT_INIT(.op_CheckResponse, rxkad_CheckResponse),
|
||
+ AFS_STRUCT_INIT(.op_CheckPacket, rxkad_CheckPacket), /* check data packet */
|
||
+ AFS_STRUCT_INIT(.op_DestroyConnection, rxkad_DestroyConnection),
|
||
+ AFS_STRUCT_INIT(.op_GetStats, rxkad_GetStats),
|
||
+ AFS_STRUCT_INIT(.op_SetConfiguration, rxkad_SetConfiguration),
|
||
+ AFS_STRUCT_INIT(.op_Spare2, NULL), /* spare 2 */
|
||
+ AFS_STRUCT_INIT(.op_Spare3, NULL), /* spare 3 */
|
||
};
|
||
extern afs_uint32 rx_MyMaxSendSize;
|
||
|
||
--
|
||
2.45.3
|
||
|