aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Rastyogin <gerben@altlinux.org>2025-08-14 13:48:32 +0300
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2025-09-02 17:57:05 +0200
commit1f82ca723478f44823a18e7151e487d58da03659 (patch)
tree6d3d4473c6b96d9f6b768c67ced3279b7bbe95e8
parent51c3aebfda6489b49cebef593a1ceb597cb97a7e (diff)
downloadqemu-1f82ca723478f44823a18e7151e487d58da03659.zip
qemu-1f82ca723478f44823a18e7151e487d58da03659.tar.gz
qemu-1f82ca723478f44823a18e7151e487d58da03659.tar.bz2
target/mips: fix TLB huge page check to use 64-bit shift
Use extract64(entry, psn, 1) instead of (entry & (1 << psn)) to avoid undefined behavior for shifts by 32–63 and to make bit extraction intent explicit. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Denis Rastyogin <gerben@altlinux.org> Message-ID: <20250814104914.13101-1-gerben@altlinux.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
-rw-r--r--target/mips/tcg/system/tlb_helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target/mips/tcg/system/tlb_helper.c b/target/mips/tcg/system/tlb_helper.c
index eccaf36..1e89015 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 (extract64(entry, psn, 1) && hugepg) {
*huge_page = true;
*hgpg_directory_hit = true;
entry = get_tlb_entry_layout(env, entry, leaf_mop, pf_ptew);