lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20180401212816.GA25507@avx2> Date: Mon, 2 Apr 2018 00:28:16 +0300 From: Alexey Dobriyan <adobriyan@...il.com> To: dhowells@...hat.com Cc: linux-kernel@...r.kernel.org Subject: Re: [PATCH 34/45] C++: Fix up use of LIST_POISON* > - entry->next = LIST_POISON1; > - entry->prev = LIST_POISON2; > + entry->next = static_cast<struct list_head *>(LIST_POISON1); > + entry->prev = static_cast<struct list_head *>(LIST_POISON2); There is a better way ;-) --- a/include/linux/poison.h +++ b/include/linux/poison.h @@ -2,6 +2,22 @@ #ifndef _LINUX_POISON_H #define _LINUX_POISON_H +class POISON { + unsigned long p; + +public: + explicit POISON(unsigned long val) + : p{val} + { + } + + template<typename T> + operator T*() const + { + return p; + } +}; + /********** include/linux/list.h **********/ /* @@ -20,15 +36,15 @@ * under normal circumstances, used to verify that nobody uses * non-initialized list entries. */ -#define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA) -#define LIST_POISON2 ((void *) 0x200 + POISON_POINTER_DELTA) +#define LIST_POISON1 POISON{0x100UL + POISON_POINTER_DELTA} +#define LIST_POISON2 POISON{0x200UL + POISON_POINTER_DELTA} /********** include/linux/timer.h **********/ /* * Magic number "tsta" to indicate a static timer initializer * for the object debugging code. */ -#define TIMER_ENTRY_STATIC ((void *) 0x300 + POISON_POINTER_DELTA) +#define TIMER_ENTRY_STATIC POISON{0x300UL + POISON_POINTER_DELTA} /********** mm/debug-pagealloc.c **********/ #ifdef CONFIG_PAGE_POISONING_ZERO @@ -39,7 +55,7 @@ /********** mm/page_alloc.c ************/ -#define TAIL_MAPPING ((void *) 0x400 + POISON_POINTER_DELTA) +#define TAIL_MAPPING POISON{0x400UL + POISON_POINTER_DELTA} /********** mm/slab.c **********/ /* @@ -81,7 +97,7 @@ /********** kernel/mutexes **********/ #define MUTEX_DEBUG_INIT 0x11 #define MUTEX_DEBUG_FREE 0x22 -#define MUTEX_POISON_WW_CTX ((void *) 0x500 + POISON_POINTER_DELTA) +#define MUTEX_POISON_WW_CTX POISON{0x500UL + POISON_POINTER_DELTA} /********** lib/flex_array.c **********/ #define FLEX_ARRAY_FREE 0x6c /* for use-after-free poisoning */
Powered by blists - more mailing lists