diff --git a/arch/arm64/kernel/include/arch-lock.h b/arch/arm64/kernel/include/arch-lock.h index 5d4d092d..b464fd8b 100644 --- a/arch/arm64/kernel/include/arch-lock.h +++ b/arch/arm64/kernel/include/arch-lock.h @@ -8,6 +8,7 @@ #include #include "affinity.h" #include +#include "config.h" //#define DEBUG_SPINLOCK //#define DEBUG_MCS_RWLOCK @@ -259,7 +260,11 @@ typedef struct mcs_lock_node { unsigned long locked; struct mcs_lock_node *next; unsigned long irqsave; -} __attribute__((aligned(64))) mcs_lock_node_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_lock_node_t; +#else +} mcs_lock_node_t; +#endif typedef mcs_lock_node_t mcs_lock_t; @@ -349,14 +354,22 @@ typedef struct mcs_rwlock_node { char dmy1; // unused char dmy2; // unused struct mcs_rwlock_node *next; -} __attribute__((aligned(64))) mcs_rwlock_node_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_node_t; +#else +} mcs_rwlock_node_t; +#endif typedef struct mcs_rwlock_node_irqsave { #ifndef SPINLOCK_IN_MCS_RWLOCK struct mcs_rwlock_node node; #endif unsigned long irqsave; -} __attribute__((aligned(64))) mcs_rwlock_node_irqsave_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_node_irqsave_t; +#else +} mcs_rwlock_node_irqsave_t; +#endif typedef struct mcs_rwlock_lock { #ifdef SPINLOCK_IN_MCS_RWLOCK @@ -365,7 +378,11 @@ typedef struct mcs_rwlock_lock { struct mcs_rwlock_node reader; /* common reader lock */ struct mcs_rwlock_node *node; /* base */ #endif -} __attribute__((aligned(64))) mcs_rwlock_lock_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_lock_t; +#else +} mcs_rwlock_lock_t; +#endif static void mcs_rwlock_init(struct mcs_rwlock_lock *lock) diff --git a/arch/x86_64/kernel/include/arch-lock.h b/arch/x86_64/kernel/include/arch-lock.h index da4bdbfe..3726353a 100644 --- a/arch/x86_64/kernel/include/arch-lock.h +++ b/arch/x86_64/kernel/include/arch-lock.h @@ -7,6 +7,7 @@ #include #include #include +#include "config.h" //#define DEBUG_SPINLOCK //#define DEBUG_MCS_RWLOCK @@ -182,7 +183,11 @@ typedef struct mcs_lock_node { unsigned long locked; struct mcs_lock_node *next; unsigned long irqsave; -} __attribute__((aligned(64))) mcs_lock_node_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_lock_node_t; +#else +} mcs_lock_node_t; +#endif typedef mcs_lock_node_t mcs_lock_t; @@ -275,14 +280,22 @@ typedef struct mcs_rwlock_node { char dmy1; // unused char dmy2; // unused struct mcs_rwlock_node *next; -} __attribute__((aligned(64))) mcs_rwlock_node_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_node_t; +#else +} mcs_rwlock_node_t; +#endif typedef struct mcs_rwlock_node_irqsave { #ifndef SPINLOCK_IN_MCS_RWLOCK struct mcs_rwlock_node node; #endif unsigned long irqsave; -} __attribute__((aligned(64))) mcs_rwlock_node_irqsave_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_node_irqsave_t; +#else +} mcs_rwlock_node_irqsave_t; +#endif typedef struct mcs_rwlock_lock { #ifdef SPINLOCK_IN_MCS_RWLOCK @@ -291,7 +304,11 @@ typedef struct mcs_rwlock_lock { struct mcs_rwlock_node reader; /* common reader lock */ struct mcs_rwlock_node *node; /* base */ #endif -} __attribute__((aligned(64))) mcs_rwlock_lock_t; +#ifndef ENABLE_UBSAN +} __aligned(64) mcs_rwlock_lock_t; +#else +} mcs_rwlock_lock_t; +#endif static void mcs_rwlock_init(struct mcs_rwlock_lock *lock)