diff options
| author | 2012-09-19 10:21:21 -0700 | |
|---|---|---|
| committer | 2012-09-19 10:21:21 -0700 | |
| commit | 0b6c404a07e3240b95aa5682fb8fd57c41609d7a (patch) | |
| tree | c4d410b0ec7044922b73c39ecfb3fbb620c29282 /arch/powerpc/lib/code-patching.c | |
| parent | Input: imx_keypad - fix missing clk conversions (diff) | |
| parent | Linux 3.6-rc5 (diff) | |
| download | wireguard-linux-0b6c404a07e3240b95aa5682fb8fd57c41609d7a.tar.xz wireguard-linux-0b6c404a07e3240b95aa5682fb8fd57c41609d7a.zip | |
Merge tag 'v3.6-rc5' into for-linus
Sync with mainline so that I can revert an input patch that came in through
another subsystem tree.
Diffstat (limited to '')
| -rw-r--r-- | arch/powerpc/lib/code-patching.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c index 7c975d43e3f3..17e5b2364312 100644 --- a/arch/powerpc/lib/code-patching.c +++ b/arch/powerpc/lib/code-patching.c @@ -13,17 +13,23 @@ #include <linux/mm.h> #include <asm/page.h> #include <asm/code-patching.h> +#include <asm/uaccess.h> -void patch_instruction(unsigned int *addr, unsigned int instr) +int patch_instruction(unsigned int *addr, unsigned int instr) { - *addr = instr; + int err; + + __put_user_size(instr, addr, 4, err); + if (err) + return err; asm ("dcbst 0, %0; sync; icbi 0,%0; sync; isync" : : "r" (addr)); + return 0; } -void patch_branch(unsigned int *addr, unsigned long target, int flags) +int patch_branch(unsigned int *addr, unsigned long target, int flags) { - patch_instruction(addr, create_branch(addr, target, flags)); + return patch_instruction(addr, create_branch(addr, target, flags)); } unsigned int create_branch(const unsigned int *addr, |
