forked from Qortal/Brooklyn
2a709f28fa
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
/*
|
|
* Mutexes: blocking mutual exclusion locks
|
|
*
|
|
* started by Ingo Molnar:
|
|
*
|
|
* Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
|
|
*
|
|
* This file contains mutex debugging related internal prototypes, for the
|
|
* !CONFIG_DEBUG_MUTEXES case. Most of them are NOPs:
|
|
*/
|
|
|
|
#define spin_lock_mutex(lock, flags) \
|
|
do { spin_lock(lock); (void)(flags); } while (0)
|
|
#define spin_unlock_mutex(lock, flags) \
|
|
do { spin_unlock(lock); (void)(flags); } while (0)
|
|
#define mutex_remove_waiter(lock, waiter, task) \
|
|
__list_del((waiter)->list.prev, (waiter)->list.next)
|
|
|
|
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
|
|
/*
|
|
* The mutex owner can get read and written to locklessly.
|
|
* We should use WRITE_ONCE when writing the owner value to
|
|
* avoid store tearing, otherwise, a thread could potentially
|
|
* read a partially written and incomplete owner value.
|
|
*/
|
|
static inline void mutex_set_owner(struct mutex *lock)
|
|
{
|
|
WRITE_ONCE(lock->owner, current);
|
|
}
|
|
|
|
static inline void mutex_clear_owner(struct mutex *lock)
|
|
{
|
|
WRITE_ONCE(lock->owner, NULL);
|
|
}
|
|
#else
|
|
static inline void mutex_set_owner(struct mutex *lock)
|
|
{
|
|
}
|
|
|
|
static inline void mutex_clear_owner(struct mutex *lock)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
#define debug_mutex_wake_waiter(lock, waiter) do { } while (0)
|
|
#define debug_mutex_free_waiter(waiter) do { } while (0)
|
|
#define debug_mutex_add_waiter(lock, waiter, ti) do { } while (0)
|
|
#define debug_mutex_unlock(lock) do { } while (0)
|
|
#define debug_mutex_init(lock, name, key) do { } while (0)
|
|
|
|
static inline void
|
|
debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
|
|
{
|
|
}
|