mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-02-07 14:54:17 +00:00
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.
70 lines
1.6 KiB
C
70 lines
1.6 KiB
C
#ifndef _LINUX_ERR_H
|
|
#define _LINUX_ERR_H
|
|
|
|
#include <linux/compiler.h>
|
|
#include <linux/types.h>
|
|
|
|
#include <asm/errno.h>
|
|
|
|
/*
|
|
* Kernel pointers have redundant information, so we can use a
|
|
* scheme where we can return either an error code or a normal
|
|
* pointer with the same return value.
|
|
*
|
|
* This should be a per-architecture thing, to allow different
|
|
* error and pointer decisions.
|
|
*/
|
|
#define MAX_ERRNO 4095
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
|
|
|
|
static inline void * __must_check __intentional_overflow(-1) ERR_PTR(long error)
|
|
{
|
|
return (void *) error;
|
|
}
|
|
|
|
static inline long __must_check __intentional_overflow(-1) PTR_ERR(__force const void *ptr)
|
|
{
|
|
return (long) ptr;
|
|
}
|
|
|
|
static inline bool __must_check IS_ERR(__force const void *ptr)
|
|
{
|
|
return IS_ERR_VALUE((unsigned long)ptr);
|
|
}
|
|
|
|
static inline bool __must_check IS_ERR_OR_NULL(__force const void *ptr)
|
|
{
|
|
return unlikely(!ptr) || IS_ERR_VALUE((unsigned long)ptr);
|
|
}
|
|
|
|
/**
|
|
* ERR_CAST - Explicitly cast an error-valued pointer to another pointer type
|
|
* @ptr: The pointer to cast.
|
|
*
|
|
* Explicitly cast an error-valued pointer to another pointer type in such a
|
|
* way as to make it clear that's what's going on.
|
|
*/
|
|
static inline void * __must_check ERR_CAST(__force const void *ptr)
|
|
{
|
|
/* cast away the const */
|
|
return (void *) ptr;
|
|
}
|
|
|
|
static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr)
|
|
{
|
|
if (IS_ERR(ptr))
|
|
return PTR_ERR(ptr);
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
/* Deprecated */
|
|
#define PTR_RET(p) PTR_ERR_OR_ZERO(p)
|
|
|
|
#endif
|
|
|
|
#endif /* _LINUX_ERR_H */
|