| From stable-bounces@linux.kernel.org Sun Jul 27 10:30:13 2008 |
| From: Jan Beulich <jbeulich@novell.com> |
| Date: Sun, 27 Jul 2008 17:30:04 GMT |
| Subject: vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section |
| To: jejb@kernel.org, stable@kernel.org |
| Message-ID: <200807271730.m6RHU4vX029154@hera.kernel.org> |
| |
| From: Jan Beulich <jbeulich@novell.com> |
| |
| commit fb5e2b379732e1a6ea32392980bb42e0212db842 upstream |
| |
| Due to the addition of __attribute__((__cold__)) to a few symbols |
| without adjusting the linker scripts, those symbols currently may end |
| up outside the [_stext,_etext) range, as they get placed in |
| .text.unlikely by (at least) gcc 4.3.0. This may confuse code not only |
| outside of the kernel, symbol_put_addr()'s BUG() could also trigger. |
| Hence we need to add .text.unlikely (and for future uses of |
| __attribute__((__hot__)) also .text.hot) to the TEXT_TEXT() macro. |
| |
| Issue observed by Lukas Lipavsky. |
| |
| Signed-off-by: Jan Beulich <jbeulich@novell.com> |
| Tested-by: Lukas Lipavsky <llipavsky@suse.cz> |
| Signed-off-by: Sam Ravnborg <sam@ravnborg.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| include/asm-generic/vmlinux.lds.h | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/include/asm-generic/vmlinux.lds.h |
| +++ b/include/asm-generic/vmlinux.lds.h |
| @@ -204,6 +204,7 @@ |
| * during second ld run in second ld pass when generating System.map */ |
| #define TEXT_TEXT \ |
| ALIGN_FUNCTION(); \ |
| + *(.text.hot) \ |
| *(.text) \ |
| *(.ref.text) \ |
| *(.text.init.refok) \ |
| @@ -213,7 +214,8 @@ |
| CPU_KEEP(init.text) \ |
| CPU_KEEP(exit.text) \ |
| MEM_KEEP(init.text) \ |
| - MEM_KEEP(exit.text) |
| + MEM_KEEP(exit.text) \ |
| + *(.text.unlikely) |
| |
| |
| /* sched.text is aling to function alignment to secure we have same |