diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-05-18 20:59:27 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-18 20:59:30 +0200 |
commit | 01ed58abec07633791f03684b937a7e22e00c9bb (patch) | |
tree | 7bb5b60c102aa08e404928ffcb3edf1e8404b5a2 /arch/x86/kernel/alternative.c | |
parent | af2d03d4aaa847ef41a229dfee098a47908437c6 (diff) | |
parent | 26afb7c661080ae3f1f13ddf7f0c58c4f931c22b (diff) |
Merge branch 'x86/mem' into perf/core
Merge reason: memcpy_64.S changes an assumption perf bench has, so merge this
here so we can fix it.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/alternative.c')
-rw-r--r-- | arch/x86/kernel/alternative.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index 651454b0c81..1eeeafcb441 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -210,6 +210,15 @@ void __init_or_module apply_alternatives(struct alt_instr *start, u8 insnbuf[MAX_PATCH_LEN]; DPRINTK("%s: alt table %p -> %p\n", __func__, start, end); + /* + * The scan order should be from start to end. A later scanned + * alternative code can overwrite a previous scanned alternative code. + * Some kernel functions (e.g. memcpy, memset, etc) use this order to + * patch code. + * + * So be careful if you want to change the scan order to any other + * order. + */ for (a = start; a < end; a++) { u8 *instr = a->instr; BUG_ON(a->replacementlen > a->instrlen); |