Do not replace whole memcpy in apply alternatives
authorPetr Vandrovec <petr@vandrovec.name>
Sun, 12 Aug 2007 08:12:52 +0000 (10:12 +0200)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sun, 12 Aug 2007 08:42:37 +0000 (01:42 -0700)
commitb8d3f2448b8f4ba24f301e23585547ba1acc1f04
treed3b01b918c779bbce433e753c3fb0207390c4950
parent3864e8ccbba1dcdea87398ab80fdc8ae0fab7c45
Do not replace whole memcpy in apply alternatives

apply_alternatives uses memcpy() to apply alternatives.  Which has the
unfortunate effect that while applying memcpy alternative to memcpy
itself it tries to overwrite itself with nops - which causes #UD fault
as it overwrites half of an instruction in copy loop, and from this
point on only possible outcome is triplefault and reboot.

So let's overwrite only first two instructions of memcpy - as long as
the main memcpy loop is not in first two bytes it will work fine.

Signed-off-by: Petr Vandrovec <petr@vandrovec.name>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86_64/lib/memcpy.S