File tree Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change 7
7
int aarch64_insn_read (void * addr , u32 * insnp );
8
8
int aarch64_insn_write (void * addr , u32 insn );
9
9
10
+ int aarch64_insn_write_literal_u64 (void * addr , u64 val );
11
+
10
12
int aarch64_insn_patch_text_nosync (void * addr , u32 insn );
11
13
int aarch64_insn_patch_text (void * addrs [], u32 insns [], int cnt );
12
14
Original file line number Diff line number Diff line change @@ -88,6 +88,23 @@ int __kprobes aarch64_insn_write(void *addr, u32 insn)
88
88
return __aarch64_insn_write (addr , cpu_to_le32 (insn ));
89
89
}
90
90
91
+ noinstr int aarch64_insn_write_literal_u64 (void * addr , u64 val )
92
+ {
93
+ u64 * waddr ;
94
+ unsigned long flags ;
95
+ int ret ;
96
+
97
+ raw_spin_lock_irqsave (& patch_lock , flags );
98
+ waddr = patch_map (addr , FIX_TEXT_POKE0 );
99
+
100
+ ret = copy_to_kernel_nofault (waddr , & val , sizeof (val ));
101
+
102
+ patch_unmap (FIX_TEXT_POKE0 );
103
+ raw_spin_unlock_irqrestore (& patch_lock , flags );
104
+
105
+ return ret ;
106
+ }
107
+
91
108
int __kprobes aarch64_insn_patch_text_nosync (void * addr , u32 insn )
92
109
{
93
110
u32 * tp = addr ;
You can’t perform that action at this time.
0 commit comments