| 1 | #ifndef _LINUX_POISON_H
|
|---|
| 2 | #define _LINUX_POISON_H
|
|---|
| 3 |
|
|---|
| 4 | /********** include/linux/list.h **********/
|
|---|
| 5 |
|
|---|
| 6 | /*
|
|---|
| 7 | * Architectures might want to move the poison pointer offset
|
|---|
| 8 | * into some well-recognized area such as 0xdead000000000000,
|
|---|
| 9 | * that is also not mappable by user-space exploits:
|
|---|
| 10 | */
|
|---|
| 11 | #ifdef CONFIG_ILLEGAL_POINTER_VALUE
|
|---|
| 12 | # define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POINTER_VALUE, UL)
|
|---|
| 13 | #else
|
|---|
| 14 | # define POISON_POINTER_DELTA 0
|
|---|
| 15 | #endif
|
|---|
| 16 |
|
|---|
| 17 | /*
|
|---|
| 18 | * These are non-NULL pointers that will result in page faults
|
|---|
| 19 | * under normal circumstances, used to verify that nobody uses
|
|---|
| 20 | * non-initialized list entries.
|
|---|
| 21 | */
|
|---|
| 22 | #define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA)
|
|---|
| 23 | #define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA)
|
|---|
| 24 |
|
|---|
| 25 | /********** include/linux/timer.h **********/
|
|---|
| 26 | /*
|
|---|
| 27 | * Magic number "tsta" to indicate a static timer initializer
|
|---|
| 28 | * for the object debugging code.
|
|---|
| 29 | */
|
|---|
| 30 | #define TIMER_ENTRY_STATIC ((void *) 0x74737461)
|
|---|
| 31 |
|
|---|
| 32 | /********** mm/debug-pagealloc.c **********/
|
|---|
| 33 | #define PAGE_POISON 0xaa
|
|---|
| 34 |
|
|---|
| 35 | /********** mm/slab.c **********/
|
|---|
| 36 | /*
|
|---|
| 37 | * Magic nums for obj red zoning.
|
|---|
| 38 | * Placed in the first word before and the first word after an obj.
|
|---|
| 39 | */
|
|---|
| 40 | #define RED_INACTIVE 0x09F911029D74E35BULL /* when obj is inactive */
|
|---|
| 41 | #define RED_ACTIVE 0xD84156C5635688C0ULL /* when obj is active */
|
|---|
| 42 |
|
|---|
| 43 | #define SLUB_RED_INACTIVE 0xbb
|
|---|
| 44 | #define SLUB_RED_ACTIVE 0xcc
|
|---|
| 45 |
|
|---|
| 46 | /* ...and for poisoning */
|
|---|
| 47 | #define POISON_INUSE 0x5a /* for use-uninitialised poisoning */
|
|---|
| 48 | #define POISON_FREE 0x6b /* for use-after-free poisoning */
|
|---|
| 49 | #define POISON_END 0xa5 /* end-byte of poisoning */
|
|---|
| 50 |
|
|---|
| 51 | /********** arch/$ARCH/mm/init.c **********/
|
|---|
| 52 | #define POISON_FREE_INITMEM 0xcc
|
|---|
| 53 |
|
|---|
| 54 | /********** arch/ia64/hp/common/sba_iommu.c **********/
|
|---|
| 55 | /*
|
|---|
| 56 | * arch/ia64/hp/common/sba_iommu.c uses a 16-byte poison string with a
|
|---|
| 57 | * value of "SBAIOMMU POISON\0" for spill-over poisoning.
|
|---|
| 58 | */
|
|---|
| 59 |
|
|---|
| 60 | /********** fs/jbd/journal.c **********/
|
|---|
| 61 | #define JBD_POISON_FREE 0x5b
|
|---|
| 62 | #define JBD2_POISON_FREE 0x5c
|
|---|
| 63 |
|
|---|
| 64 | /********** drivers/base/dmapool.c **********/
|
|---|
| 65 | #define POOL_POISON_FREED 0xa7 /* !inuse */
|
|---|
| 66 | #define POOL_POISON_ALLOCATED 0xa9 /* !initted */
|
|---|
| 67 |
|
|---|
| 68 | /********** drivers/atm/ **********/
|
|---|
| 69 | #define ATM_POISON_FREE 0x12
|
|---|
| 70 | #define ATM_POISON 0xdeadbeef
|
|---|
| 71 |
|
|---|
| 72 | /********** net/ **********/
|
|---|
| 73 | #define NEIGHBOR_DEAD 0xdeadbeef
|
|---|
| 74 | #define NETFILTER_LINK_POISON 0xdead57ac
|
|---|
| 75 |
|
|---|
| 76 | /********** kernel/mutexes **********/
|
|---|
| 77 | #define MUTEX_DEBUG_INIT 0x11
|
|---|
| 78 | #define MUTEX_DEBUG_FREE 0x22
|
|---|
| 79 |
|
|---|
| 80 | /********** lib/flex_array.c **********/
|
|---|
| 81 | #define FLEX_ARRAY_FREE 0x6c /* for use-after-free poisoning */
|
|---|
| 82 |
|
|---|
| 83 | /********** security/ **********/
|
|---|
| 84 | #define KEY_DESTROY 0xbd
|
|---|
| 85 |
|
|---|
| 86 | /********** sound/oss/ **********/
|
|---|
| 87 | #define OSS_POISON_FREE 0xAB
|
|---|
| 88 |
|
|---|
| 89 | #endif
|
|---|