mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
LoongArch: Check return values for set_memory_{rw,rox}
set_memory_rw() and set_memory_rox() may fail, so we should check the return values and return immediately in larch_insn_text_copy(). Cc: stable@vger.kernel.org Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
parent
a47f0754bd
commit
431ce839da
|
|
@ -258,6 +258,7 @@ static int text_copy_cb(void *data)
|
|||
int larch_insn_text_copy(void *dst, void *src, size_t len)
|
||||
{
|
||||
int ret = 0;
|
||||
int err = 0;
|
||||
size_t start, end;
|
||||
struct insn_copy copy = {
|
||||
.dst = dst,
|
||||
|
|
@ -275,9 +276,19 @@ int larch_insn_text_copy(void *dst, void *src, size_t len)
|
|||
start = round_down((size_t)dst, PAGE_SIZE);
|
||||
end = round_up((size_t)dst + len, PAGE_SIZE);
|
||||
|
||||
set_memory_rw(start, (end - start) / PAGE_SIZE);
|
||||
err = set_memory_rw(start, (end - start) / PAGE_SIZE);
|
||||
if (err) {
|
||||
pr_info("%s: set_memory_rw() failed\n", __func__);
|
||||
return err;
|
||||
}
|
||||
|
||||
ret = stop_machine_cpuslocked(text_copy_cb, ©, cpu_online_mask);
|
||||
set_memory_rox(start, (end - start) / PAGE_SIZE);
|
||||
|
||||
err = set_memory_rox(start, (end - start) / PAGE_SIZE);
|
||||
if (err) {
|
||||
pr_info("%s: set_memory_rox() failed\n", __func__);
|
||||
return err;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user