X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=arch%2Fx86%2Fkernel%2Falternative.c;h=a81f2d52f869d842d9301d5f9aea5c23a74369a2;hb=016281880439a8665ecf37514865742da58131d4;hp=c0501ea6b634cd4b998ef7002b6ff8b93fc14d05;hpb=865be7a81071a77014c83cd01536c989eed362b4;p=karo-tx-linux.git diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index c0501ea6b634..a81f2d52f869 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -266,6 +266,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);