OSDN Git Service

sparc64: Fix illegal relative branches in hypervisor patched TLB code.
authorDavid S. Miller <davem@davemloft.net>
Tue, 25 Oct 2016 23:23:26 +0000 (16:23 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Nov 2016 09:06:41 +0000 (10:06 +0100)
commit217f829ae96783d9b4968d941769fb4c15e380c6
tree11b380edc0589ed646199b57b025d6c94d63d873
parent2ba06323db413dd0b8f501dfc32df5d55f17c520
sparc64: Fix illegal relative branches in hypervisor patched TLB code.

[ Upstream commit b429ae4d5b565a71dfffd759dfcd4f6c093ced94 ]

When we copy code over to patch another piece of code, we can only use
PC-relative branches that target code within that piece of code.

Such PC-relative branches cannot be made to external symbols because
the patch moves the location of the code and thus modifies the
relative address of external symbols.

Use an absolute jmpl to fix this problem.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/sparc/mm/ultra.S