From nobody Tue Feb 10 07:44:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=mail.ustc.edu.cn ARC-Seal: i=1; a=rsa-sha256; t=1672628860; cv=none; d=zohomail.com; s=zohoarc; b=FRz14yBqyJg6xsocoi9EEXw92r8HiCpFKFx3bTK3RSttUZumtNPGxzZLgA2iBAqEJvWf1d7y3Gc7CUD2XFx7pT55/sHdxT6yEwD6/MvigDB3eeZ6L7f+XICDkZmJUBQn0Hd0A/0yAq7Tv7plTo37dprn5O5VTMVFoqEptCnEjKM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1672628860; h=Content-Type:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=ydPN67ZW7H4bXOmoYoB5A4xZK/joI5PaV2kcNeJxATE=; b=AJ3T8Ny84/lmE9qNAQ23kJOW0qEomX51DFPiNyqJq2Vqp8UQb8Izo4LNkoNZ6LyUzcCB2Xk94MZeTwGOIaXnvhHwuicEqlBKHBuW8NGBTed2hCBU6jYNCQ5kZJV7WPNpNU4TYM7qWBQQ87M5kL39M15gzgIGQajeCJIvfBKQLrc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1672628860136497.77986640252016; Sun, 1 Jan 2023 19:07:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pCB9w-0002cH-6r; Sun, 01 Jan 2023 22:06:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pCB9u-0002c9-C8 for qemu-devel@nongnu.org; Sun, 01 Jan 2023 22:06:42 -0500 Received: from email6.ustc.edu.cn ([2001:da8:d800::8] helo=ustc.edu.cn) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pCB9p-0006Sq-Ts for qemu-devel@nongnu.org; Sun, 01 Jan 2023 22:06:42 -0500 Received: by ajax-webmail-newmailweb.ustc.edu.cn (Coremail) ; Mon, 2 Jan 2023 11:06:25 +0800 (GMT+08:00) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ustc.edu.cn; s=dkim; h=Received:Date:From:To:Cc:Subject: Content-Type:MIME-Version:Message-ID; bh=ydPN67ZW7H4bXOmoYoB5A4x ZK/joI5PaV2kcNeJxATE=; b=hUIi9ANHNhtmuvADPl9e5QBrffP6JwjeSyGhPRL uVqKfu/SUrtEyqoQgG2FP9UfO/166emdMwlieKyoPrp2g2B7j2ICEthPPwVeBJef HXc7LdWVLngbA4QKQjif9h/Y6tZrkv1Z/TBqwnprKBQ6zYV1PLqdFjGWSnlM1a0L Xcao= X-Originating-IP: [120.204.77.150] Date: Mon, 2 Jan 2023 11:06:25 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: fanwj@mail.ustc.edu.cn To: qemu-devel@nongnu.org Cc: laurent@vivier.eu Subject: [PATCH] linux-user: fix bug about incorrect base addresss of idt and gdt on i386 and x86_64 X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT3.0.8 dev build 20210401(c5ff3689) Copyright (c) 2002-2023 www.mailtech.cn ustccn X-SendMailWithSms: false Content-Type: multipart/alternative; boundary="----=_Part_458889_429345013.1672628785236" MIME-Version: 1.0 Message-ID: <2e1eee7a.20131.1857071d054.Coremail.fanwj@mail.ustc.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID: LkAmygCXO6MxSrJjZLCJAA--.0W X-CM-SenderInfo: pidq4yo6pdxzwoxv3uoohg3hdfq/1tbiAQ4REFQhoPMeLgAzsr X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:da8:d800::8; envelope-from=fanwj@mail.ustc.edu.cn; helo=ustc.edu.cn X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @mail.ustc.edu.cn) X-ZM-MESSAGEID: 1672628863506100003 ------=_Part_458889_429345013.1672628785236 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: fanwenjie On linux user mode, CPUX86State::idt::base and CPUX86State::gdt::base from = Different CPUX86State Objects have same value, It is incorrect! Every CPUX8= 6State::idt::base and Every CPUX86State::gdt::base Must points to independe= nt memory space. =20 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1405 Signed-off-by: fanwenjie --- linux-user/i386/cpu_loop.c | 10 ++++++++++ linux-user/main.c | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index 865413c08f..1f23bc5e3a 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -314,8 +314,18 @@ void cpu_loop(CPUX86State *env) } } =20 +static void target_cpu_free(void *obj) +{ + CPUArchState* env =3D ((CPUState*)obj)->env_ptr; + target_munmap(env->idt.base, sizeof(uint64_t) * (env->idt.limit + 1)); + target_munmap(env->gdt.base, sizeof(uint64_t) * TARGET_GDT_ENTRIES); + g_free(obj); +} + void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { + CPUState* cpu =3D env_cpu(env); + OBJECT(cpu)->free =3D target_cpu_free; env->cr[0] =3D CR0_PG_MASK | CR0_WP_MASK | CR0_PE_MASK; env->hflags |=3D HF_PE_MASK | HF_CPL_MASK; if (env->features[FEAT_1_EDX] & CPUID_SSE) { diff --git a/linux-user/main.c b/linux-user/main.c index a17fed045b..2276040548 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -234,6 +234,17 @@ CPUArchState *cpu_copy(CPUArchState *env) =20 new_cpu->tcg_cflags =3D cpu->tcg_cflags; memcpy(new_env, env, sizeof(CPUArchState)); +#if defined(TARGET_I386) || defined(TARGET_X86_64) + new_env->gdt.base =3D target_mmap(0, sizeof(uint64_t) * TARGET_GDT_ENT= RIES, + PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); + new_env->idt.base =3D target_mmap(0, sizeof(uint64_t) * (env->idt.limi= t + 1), + PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); + memcpy((void*)new_env->gdt.base, (void*)env->gdt.base, sizeof(uint64_t= ) * TARGET_GDT_ENTRIES); + memcpy((void*)new_env->idt.base, (void*)env->idt.base, sizeof(uint64_t= ) * (env->idt.limit + 1)); + OBJECT(new_cpu)->free =3D OBJECT(cpu)->free; +#endif =20 /* Clone all break/watchpoints. Note: Once we support ptrace with hw-debug register access, make su= re --=20 2.34.1 ------=_Part_458889_429345013.1672628785236 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdj48ZGl2PkZyb206IGZhbndlbmppZSAmbHQ7ZmFud2pAbWFpbC51c3RjLmVkdS5jbiZndDs8 L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk9uIGxpbnV4IHVzZXIgbW9kZSwgQ1BVWDg2U3RhdGU6 OmlkdDo6YmFzZSBhbmQgQ1BVWDg2U3RhdGU6OmdkdDo6YmFzZSBmcm9tIERpZmZlcmVudCBDUFVY ODZTdGF0ZSBPYmplY3RzIGhhdmUgc2FtZSB2YWx1ZSwgSXQgaXMgaW5jb3JyZWN0ISBFdmVyeSBD UFVYODZTdGF0ZTo6aWR0OjpiYXNlIGFuZCBFdmVyeSBDUFVYODZTdGF0ZTo6Z2R0OjpiYXNlIE11 c3QgcG9pbnRzIHRvIGluZGVwZW5kZW50IG1lbW9yeSBzcGFjZS4mbmJzcDsmbmJzcDs8L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PlJlc29sdmVzOiBodHRwczovL2dpdGxhYi5jb20vcWVtdS1wcm9q ZWN0L3FlbXUvLS9pc3N1ZXMvMTQwNTwvZGl2PjxkaXY+U2lnbmVkLW9mZi1ieTogZmFud2Vuamll ICZsdDtmYW53akBtYWlsLnVzdGMuZWR1LmNuJmd0OzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ LS0tPC9kaXY+PGRpdj4mbmJzcDtsaW51eC11c2VyL2kzODYvY3B1X2xvb3AuYyB8IDEwICsrKysr KysrKys8L2Rpdj48ZGl2PiZuYnNwO2xpbnV4LXVzZXIvbWFpbi5jJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyB8IDExICsrKysrKysrKysrPC9kaXY+PGRpdj4mbmJzcDsyIGZpbGVz IGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmRpZmYg LS1naXQgYS9saW51eC11c2VyL2kzODYvY3B1X2xvb3AuYyBiL2xpbnV4LXVzZXIvaTM4Ni9jcHVf bG9vcC5jPC9kaXY+PGRpdj5pbmRleCA4NjU0MTNjMDhmLi4xZjIzYmM1ZTNhIDEwMDY0NDwvZGl2 PjxkaXY+LS0tIGEvbGludXgtdXNlci9pMzg2L2NwdV9sb29wLmM8L2Rpdj48ZGl2PisrKyBiL2xp bnV4LXVzZXIvaTM4Ni9jcHVfbG9vcC5jPC9kaXY+PGRpdj5AQCAtMzE0LDggKzMxNCwxOCBAQCB2 b2lkIGNwdV9sb29wKENQVVg4NlN0YXRlICplbnYpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZu YnNwO308L2Rpdj48ZGl2PiZuYnNwO308L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+K3N0YXRp YyB2b2lkIHRhcmdldF9jcHVfZnJlZSh2b2lkICpvYmopPC9kaXY+PGRpdj4rezwvZGl2PjxkaXY+ KyZuYnNwOyAmbmJzcDsgQ1BVQXJjaFN0YXRlKiBlbnYgPSAoKENQVVN0YXRlKilvYmopLSZndDtl bnZfcHRyOzwvZGl2PjxkaXY+KyZuYnNwOyAmbmJzcDsgdGFyZ2V0X211bm1hcChlbnYtJmd0O2lk dC5iYXNlLCBzaXplb2YodWludDY0X3QpICogKGVudi0mZ3Q7aWR0LmxpbWl0ICsgMSkpOzwvZGl2 PjxkaXY+KyZuYnNwOyAmbmJzcDsgdGFyZ2V0X211bm1hcChlbnYtJmd0O2dkdC5iYXNlLCBzaXpl b2YodWludDY0X3QpICogVEFSR0VUX0dEVF9FTlRSSUVTKTs8L2Rpdj48ZGl2PismbmJzcDsgJm5i c3A7IGdfZnJlZShvYmopOzwvZGl2PjxkaXY+K308L2Rpdj48ZGl2Pis8L2Rpdj48ZGl2PiZuYnNw O3ZvaWQgdGFyZ2V0X2NwdV9jb3B5X3JlZ3MoQ1BVQXJjaFN0YXRlICplbnYsIHN0cnVjdCB0YXJn ZXRfcHRfcmVncyAqcmVncyk8L2Rpdj48ZGl2PiZuYnNwO3s8L2Rpdj48ZGl2PismbmJzcDsgJm5i c3A7IENQVVN0YXRlKiBjcHUgPSBlbnZfY3B1KGVudik7PC9kaXY+PGRpdj4rJm5ic3A7ICZuYnNw OyBPQkpFQ1QoY3B1KS0mZ3Q7ZnJlZSA9IHRhcmdldF9jcHVfZnJlZTs8L2Rpdj48ZGl2PiZuYnNw OyAmbmJzcDsgJm5ic3A7ZW52LSZndDtjclswXSA9IENSMF9QR19NQVNLIHwgQ1IwX1dQX01BU0sg fCBDUjBfUEVfTUFTSzs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ZW52LSZndDtoZmxh Z3MgfD0gSEZfUEVfTUFTSyB8IEhGX0NQTF9NQVNLOzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm bmJzcDtpZiAoZW52LSZndDtmZWF0dXJlc1tGRUFUXzFfRURYXSAmYW1wOyBDUFVJRF9TU0UpIHs8 L2Rpdj48ZGl2PmRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFp bi5jPC9kaXY+PGRpdj5pbmRleCBhMTdmZWQwNDViLi4yMjc2MDQwNTQ4IDEwMDY0NDwvZGl2Pjxk aXY+LS0tIGEvbGludXgtdXNlci9tYWluLmM8L2Rpdj48ZGl2PisrKyBiL2xpbnV4LXVzZXIvbWFp bi5jPC9kaXY+PGRpdj5AQCAtMjM0LDYgKzIzNCwxNyBAQCBDUFVBcmNoU3RhdGUgKmNwdV9jb3B5 KENQVUFyY2hTdGF0ZSAqZW52KTwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj4mbmJzcDsgJm5i c3A7ICZuYnNwO25ld19jcHUtJmd0O3RjZ19jZmxhZ3MgPSBjcHUtJmd0O3RjZ19jZmxhZ3M7PC9k aXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwO21lbWNweShuZXdfZW52LCBlbnYsIHNpemVvZihD UFVBcmNoU3RhdGUpKTs8L2Rpdj48ZGl2PisjaWYgZGVmaW5lZChUQVJHRVRfSTM4NikgfHwgZGVm aW5lZChUQVJHRVRfWDg2XzY0KTwvZGl2PjxkaXY+KyZuYnNwOyAmbmJzcDsgbmV3X2Vudi0mZ3Q7 Z2R0LmJhc2UgPSB0YXJnZXRfbW1hcCgwLCBzaXplb2YodWludDY0X3QpICogVEFSR0VUX0dEVF9F TlRSSUVTLDwvZGl2PjxkaXY+KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFBST1RfUkVBRHxQUk9UX1dSSVRFLDwvZGl2 PjxkaXY+KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUsIC0xLCAwKTs8L2Rp dj48ZGl2PismbmJzcDsgJm5ic3A7IG5ld19lbnYtJmd0O2lkdC5iYXNlID0gdGFyZ2V0X21tYXAo MCwgc2l6ZW9mKHVpbnQ2NF90KSAqIChlbnYtJmd0O2lkdC5saW1pdCArIDEpLDwvZGl2PjxkaXY+ KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBQ Uk9UX1JFQUR8UFJPVF9XUklURSw8L2Rpdj48ZGl2PismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgTUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSwg LTEsIDApOzwvZGl2PjxkaXY+KyZuYnNwOyAmbmJzcDsgbWVtY3B5KCh2b2lkKiluZXdfZW52LSZn dDtnZHQuYmFzZSwgKHZvaWQqKWVudi0mZ3Q7Z2R0LmJhc2UsIHNpemVvZih1aW50NjRfdCkgKiBU QVJHRVRfR0RUX0VOVFJJRVMpOzwvZGl2PjxkaXY+KyZuYnNwOyAmbmJzcDsgbWVtY3B5KCh2b2lk KiluZXdfZW52LSZndDtpZHQuYmFzZSwgKHZvaWQqKWVudi0mZ3Q7aWR0LmJhc2UsIHNpemVvZih1 aW50NjRfdCkgKiAoZW52LSZndDtpZHQubGltaXQgKyAxKSk7PC9kaXY+PGRpdj4rJm5ic3A7ICZu YnNwOyBPQkpFQ1QobmV3X2NwdSktJmd0O2ZyZWUgPSBPQkpFQ1QoY3B1KS0mZ3Q7ZnJlZTs8L2Rp dj48ZGl2PisjZW5kaWY8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm bmJzcDsvKiBDbG9uZSBhbGwgYnJlYWsvd2F0Y2hwb2ludHMuPC9kaXY+PGRpdj4mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgTm90ZTogT25jZSB3ZSBzdXBwb3J0IHB0cmFjZSB3aXRoIGh3LWRl YnVnIHJlZ2lzdGVyIGFjY2VzcywgbWFrZSBzdXJlPC9kaXY+PGRpdj4tLSZuYnNwOzwvZGl2Pjxk aXY+Mi4zNC4xPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+ ------=_Part_458889_429345013.1672628785236--