Hi Denis,
On 22/7/25 12:17, ger...@altlinux.org wrote:
From: Denis Rastyogin <ger...@altlinux.org>
Use 1ULL << psn to ensure the shift is done in 64-bit arithmetic,
avoiding overflow for large psn values. The 6-bit psn field allows
values up to 63, so 64-bit shift is required for correctness.
If you are really worried about that, please use the simpler
extract64() method instead, it is much clearer to understand
when reviewing than (unsigned long long) casts.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Signed-off-by: Denis Rastyogin <ger...@altlinux.org>
---
target/mips/tcg/system/tlb_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/mips/tcg/system/tlb_helper.c
b/target/mips/tcg/system/tlb_helper.c
index eccaf3624c..b8b8747064 100644
--- a/target/mips/tcg/system/tlb_helper.c
+++ b/target/mips/tcg/system/tlb_helper.c
@@ -652,7 +652,7 @@ static int walk_directory(CPUMIPSState *env, uint64_t
*vaddr,
return 0;
}
- if ((entry & (1 << psn)) && hugepg) {
+ if ((entry & (1ULL << psn)) && hugepg) {
*huge_page = true;
*hgpg_directory_hit = true;
entry = get_tlb_entry_layout(env, entry, leaf_mop, pf_ptew);