mirror of https://github.com/xemu-project/xemu.git
accel/tcg: Uncache the host address for instruction fetch when tlb size < 1
When PMP entry overlap part of the page, we'll set the tlb_size to 1, which will make the address in tlb entry set with TLB_INVALID_MASK, and the next access will again go through tlb_fill.However, this way will not work in tb_gen_code() => get_page_addr_code_hostp(): the TLB host address will be cached, and the following instructions can use this host address directly which may lead to the bypass of PMP related check. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1542. Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn> Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn> Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230422130329.23555-6-liweiwei@iscas.ac.cn>
This commit is contained in:
parent
6a6447fe25
commit
ac01ec6fe5
|
@ -1696,6 +1696,11 @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState *env, target_ulong addr,
|
|||
if (p == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (full->lg_page_size < TARGET_PAGE_BITS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (hostp) {
|
||||
*hostp = p;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue