Skip to content

Commit

Permalink
x86/brk: make the brk reservation symbols inaccessible from C
Browse files Browse the repository at this point in the history
Impact: bulletproofing, clarification

The brk reservation symbols are just there to document the amount
of space reserved by brk users in the final vmlinux file.  Their
addresses are irrelevent, and using their addresses will cause
certain havok.  Name them ".brk.NAME", which is a valid asm symbol
but C can't reference it; it also highlights their special
role in the symbol table.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
  • Loading branch information
Jeremy Fitzhardinge committed Mar 17, 2009
1 parent 60ac982 commit 0b1c723
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions arch/x86/include/asm/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ void *extend_brk(size_t size, size_t align);
* executable.)
*/
#define RESERVE_BRK(name,sz) \
static void __section(.discard) __used \
static void __section(.discard) __used \
__brk_reservation_fn_##name##__(void) { \
asm volatile ( \
".pushsection .brk_reservation,\"aw\",@nobits;" \
"__brk_reservation_" #name "__:" \
".brk." #name ":" \
" 1:.skip %c0;" \
" .size __brk_reservation_" #name "__, . - 1b;" \
" .size .brk." #name ", . - 1b;" \
" .popsection" \
: : "i" (sz)); \
}
Expand All @@ -141,9 +141,9 @@ void __init x86_64_start_reservations(char *real_mode_data);
#else
#define RESERVE_BRK(name,sz) \
.pushsection .brk_reservation,"aw",@nobits; \
__brk_reservation_##name##__: \
.brk.name: \
1: .skip sz; \
.size __brk_reservation_##name##__,.-1b; \
.size .brk.name,.-1b; \
.popsection
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
Expand Down

0 comments on commit 0b1c723

Please sign in to comment.