From nobody Sun Jul 26 10:59:15 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1783356963; cv=none; d=zohomail.com; s=zohoarc; b=eRDOnu4NY9sv7tl42rFPS3X1xPT/uCwr/4tELeapc6f6lH5lO5dMZw9eJTzCOCzETeO4eTpukaHbnk22ocm5e7j9I3YM7oXsIhku22FUlNSvAfJCMUoHff5cEfTDWClQlhxW+HxwpxLiaTRep9FwJWKqRXkYLJSG1lWZbauFK7A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783356963; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5cS3U9nM4hcwYoRXuCsbWdnzjuAZj78G/YwnXxrBmfw=; b=RMOFVrOPxrH2o9AxGreCtb/hwSvLSIPCoUjLwPs+OlBPGbeqEdaace8DybbOZPGqNmHVyEkJTq6G9gOhkYdJdJijHg+QWy0ubfEKMYkUzps3bHgO+YtsnqwriX8GvgkB5CTF2LkFy/pWrPWg+6V8rVc/YoX56HXNybTSBH2CqH4= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783356963363790.4292282370906; Mon, 6 Jul 2026 09:56:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgmb1-0006O8-5U; Mon, 06 Jul 2026 12:55:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmau-0006MI-Lp for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:56 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmas-0002yz-MZ for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:56 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 666FITsr507586; Mon, 6 Jul 2026 16:54:52 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4f6sw4jg36-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:52 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 666GnhX8013180; Mon, 6 Jul 2026 16:54:51 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4f7cvvxkkn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:50 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 666GsmxO47907172 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Jul 2026 16:54:49 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D638920043; Mon, 6 Jul 2026 16:54:48 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 961CF20040; Mon, 6 Jul 2026 16:54:48 +0000 (GMT) Received: from heavy.ibm.com (unknown [9.111.23.52]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Jul 2026 16:54:48 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=5cS3U9nM4hcwYoRXu CsbWdnzjuAZj78G/YwnXxrBmfw=; b=nBHVHGjuT58ICGTNkDX3KHshmreAwCCnP F80s+PgIbX5zhAIdCiEooIXKpxPz0W9pDmvQOz7tQ6hsXbvm6DELOnmgiRay1GYf QTah9S7R+kPzyOgbDfnOJ1JWZsfM3yAbaPJx13ZwdVRvdjEmv43cK3Ir8yzfnpgc PQxU1nMiCwF9LbPOtETuhSmIG27oydSnVpQJXQne/lKecTrctyqS2CSQ3IM5pisA +/jSPrrY/5exQwo0iumOWaD6lgNrCljlTp0a+4OkitSvSasEth0pksUoBQOnv33D FFH3wL5T7YcWBCqBzdA+vflgA3aM+AQCAwjbOs4DkAmLXu32ddgBw== From: Ilya Leoshkevich To: Richard Henderson , Paolo Bonzini Cc: qemu-devel@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 1/3] accel/tcg: Make PageFlagsNodes' start and last immutable Date: Mon, 6 Jul 2026 18:51:23 +0200 Message-ID: <20260706165445.57418-2-iii@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260706165445.57418-1-iii@linux.ibm.com> References: <20260706165445.57418-1-iii@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: kkw16akFLjuNlnvnfq8pfP7Z0PXzAmfM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfXw7/BmRsgu82D sO/IGNt1CpK4ccCp/Vujoi5XbibTQWs72qpwanzLrcb8fQuVRSkkzh4B4dJuWqtVzHiUYTN4itZ xHR3asV96Etkqc8oBjAw/F3zN9Riell3xuabtd146vYt4/IwMGAsNNmUBHFvs5rwHwYWHdFvhfZ Wr/Pd3+WO4JpGK/6C0H4Pg0aQX7PuK9/5vqIcaqUWI9bfVpfm6zxvzSnAuB5bPotlONJzp/F414 jnu3e4jw7gxkm0TQb4ieu76CLjCP9fpJTy9jHsc4LvLyvawJ53NOKzSXAVIQhJmFUiDDgc5YOmp dFownQs/f5Hx3rv0bXcN/5irApJWNABAPhefCPE4Zq7Dw0ONZ2at2x3bG1eEer7mTDsXRU8Cl7z ZYc73Phnkkgz/g0cpLmwu77vtG8VB0aFhJEN9JJmzQe+oWmvAG47IghBEY44y7KInb4+VeKcGzF RcEm+iOzSewFJAJmo1g== X-Proofpoint-ORIG-GUID: kkw16akFLjuNlnvnfq8pfP7Z0PXzAmfM X-Authority-Analysis: v=2.4 cv=FqQ1OWrq c=1 sm=1 tr=0 ts=6a4bdddc cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=aeXNbhhOpW3SYJoWk14A:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfX0taBdZoZPMKo Kh34l7XJH/Ja5L1Mnd+nfWg0+kbZn8tI9AwIE2e1e/knelED//MC/GN6TsdiOAS1JynYZSYxcoQ nDQKesAlBZT8hYjc2D4PoIZcuBx137w= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-06_02,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607060170 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=iii@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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: qemu development 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 @ibm.com) X-ZM-MESSAGEID: 1783356964739158500 Content-Type: text/plain; charset="utf-8" page_check_range() may race with pageflags_set_clear() as follows: T1 T2 ------------------------------------- -------------------------------- p =3D pageflags_find(start, last= ); interval_tree_remove(&p->itree, ...); p->itree.start =3D last + 1; if (start < p->itree.start) { ret =3D false; interval_tree_insert(&p->itree, ...); leading to errors like fail indirect write 0x72f0a659aff0 (Bad address) in vma-pthread test. I am able to reliably reproduce this on a machine with 32 SMT threads as follows in about 25 seconds: jobs=3D32; \ seq "$jobs" | \ time -p parallel \ --jobs=3D"$jobs" \ --halt=3Dnow,done=3D1 \ --ungroup \ ' _=3D{}; while ./qemu-s390x tests/tcg/s390x-linux-user/vma-pthread; = do printf .; done ' Also wasmtime project reported a similar failure pattern in their CI [1] with a similar reproducer [2]. There are other races like this. In general, region bounds mutating underneath the reader are very hard to reason about. So fix this by preventing mutations and creating copies instead. Use RCU guards in readers to avoid uses-after-frees. Now, when the reader finds a node, it may fearlessly access its fields and be certain that at some point in time the respective region had the respective bounds and permissions. The downside is slightly more expensive mprotect(), but complexity reduction is worth it. Lockless field accesses should probably be wrapped in qatomic_read(), but this is a pre-existing issue, so do not change it here. [1] https://github.com/bytecodealliance/wasmtime/issues/10000 [2] https://gist.github.com/alexcrichton/f14f23a892ffb9df2522754572d51b1c Signed-off-by: Ilya Leoshkevich Reported-by: Alex Crichton Reported-by: Ulrich Weigand Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- accel/tcg/user-exec.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 7704e4017dd..55761cacf65 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -239,13 +239,16 @@ void page_dump(FILE *f) =20 int page_get_flags(vaddr address) { - PageFlagsNode *p =3D pageflags_find(address, address); + PageFlagsNode *p; + + RCU_READ_LOCK_GUARD(); =20 /* * See util/interval-tree.c re lockless lookups: no false positives but * there are false negatives. If we find nothing, retry with the mmap * lock acquired. */ + p =3D pageflags_find(address, address); if (p) { return p->flags; } @@ -301,15 +304,15 @@ static void pageflags_create_merge(vaddr start, vaddr= last, int flags) =20 if (prev) { if (next) { - prev->itree.last =3D next->itree.last; + pageflags_create(prev->itree.start, next->itree.last, flags); g_free_rcu(next, rcu); } else { - prev->itree.last =3D last; + pageflags_create(prev->itree.start, last, flags); } - interval_tree_insert(&prev->itree, &pageflags_root); + g_free_rcu(prev, rcu); } else if (next) { - next->itree.start =3D start; - interval_tree_insert(&next->itree, &pageflags_root); + pageflags_create(start, next->itree.last, flags); + g_free_rcu(next, rcu); } else { pageflags_create(start, last, flags); } @@ -371,8 +374,8 @@ static bool pageflags_set_clear(vaddr start, vaddr last, if (set_flags !=3D merge_flags) { if (p_start < start) { interval_tree_remove(&p->itree, &pageflags_root); - p->itree.last =3D start - 1; - interval_tree_insert(&p->itree, &pageflags_root); + pageflags_create(p_start, start - 1, p_flags); + g_free_rcu(p, rcu); =20 if (last < p_last) { if (merge_flags & PAGE_VALID) { @@ -394,11 +397,11 @@ static bool pageflags_set_clear(vaddr start, vaddr la= st, } if (last < p_last) { interval_tree_remove(&p->itree, &pageflags_root); - p->itree.start =3D last + 1; - interval_tree_insert(&p->itree, &pageflags_root); + pageflags_create(last + 1, p_last, p_flags); if (merge_flags & PAGE_VALID) { pageflags_create(start, last, merge_flags); } + g_free_rcu(p, rcu); } else { if (merge_flags & PAGE_VALID) { p->flags =3D merge_flags; @@ -419,8 +422,8 @@ static bool pageflags_set_clear(vaddr start, vaddr last, if (set_flags =3D=3D p_flags) { if (start < p_start) { interval_tree_remove(&p->itree, &pageflags_root); - p->itree.start =3D start; - interval_tree_insert(&p->itree, &pageflags_root); + pageflags_create(start, p_last, p_flags); + g_free_rcu(p, rcu); } if (p_last < last) { start =3D p_last + 1; @@ -432,8 +435,8 @@ static bool pageflags_set_clear(vaddr start, vaddr last, /* Maybe split out head and/or tail ranges with the original flags. */ interval_tree_remove(&p->itree, &pageflags_root); if (p_start < start) { - p->itree.last =3D start - 1; - interval_tree_insert(&p->itree, &pageflags_root); + pageflags_create(p_start, start - 1, p_flags); + g_free_rcu(p, rcu); =20 if (p_last < last) { goto restart; @@ -442,8 +445,8 @@ static bool pageflags_set_clear(vaddr start, vaddr last, pageflags_create(last + 1, p_last, p_flags); } } else if (last < p_last) { - p->itree.start =3D last + 1; - interval_tree_insert(&p->itree, &pageflags_root); + pageflags_create(last + 1, p_last, p_flags); + g_free_rcu(p, rcu); } else { g_free_rcu(p, rcu); goto restart; @@ -505,6 +508,8 @@ bool page_check_range(vaddr start, vaddr len, int flags) return false; /* wrap around */ } =20 + RCU_READ_LOCK_GUARD(); + locked =3D have_mmap_lock(); while (true) { PageFlagsNode *p =3D pageflags_find(start, last); --=20 2.54.0 From nobody Sun Jul 26 10:59:15 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1783356965; cv=none; d=zohomail.com; s=zohoarc; b=Ysb3XjH2Abs+YJmHdjUcx13HNGYgXfjcxHR1h7n7AdtcCjfiu4kDVsjDzFXHAqF7iTS37wqaQEwuGskQZ89qw36Dz7/Yxm7lzyVs7vrh6ZAVnMup3ekCi5K2t11OLOv+eCtEFAu+Y0sZtoA75H9XOtea0lKFfHvBGIGq6sFiB40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783356965; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gsMva91G76yjbiV/MgVal1y7z2duRUKKtIvXqJTZDOc=; b=L50lUQ1kpEYyERA8KyihqZ3w6HUNDI4i4griKLFSyqimZ2kTXlodOAPzA9sArDd3uxSHVqG4GAG786wDOJaQ/Midr2A33ZUwi0cu0I7ywiL+lKzsRxJ6xNN0HOFpoREcFcOkttD2mZGknsPL2brD334lrtMtsPGoHMZrecGiBbY= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783356965663469.92493751182485; Mon, 6 Jul 2026 09:56:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgmax-0006N6-F8; Mon, 06 Jul 2026 12:54:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmau-0006M3-3T for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:56 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmas-0002yw-Jw for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:55 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 666FIEUM611278; Mon, 6 Jul 2026 16:54:52 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4f6sp3jhvj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:51 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 666Gnjj9003708; Mon, 6 Jul 2026 16:54:51 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4f7f6xx463-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:51 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 666Gsnpa30278234 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Jul 2026 16:54:49 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3E1D620040; Mon, 6 Jul 2026 16:54:49 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E72C62004B; Mon, 6 Jul 2026 16:54:48 +0000 (GMT) Received: from heavy.ibm.com (unknown [9.111.23.52]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Jul 2026 16:54:48 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=gsMva91G76yjbiV/M gVal1y7z2duRUKKtIvXqJTZDOc=; b=IFfWwemnBsiO4hePVW6QKfQdCPq0iLQeM VOySs8g3ysnjf1IQm7AhUns5R6miMKJsxxmOAb4sQDihU6Iga9bCgSG0bXOeRKYu igbjIrZOKoJt/H8c93kpbVUcxl48urbpuDbO/yBdSJhI7Bl4MRgp3RUrwce08wM/ YYDWbqHs93x2SB1GC/YdGqHBhfsgmEfcTls2FT5ztYi/TLV6opJ9LSS8gwqBtaNk 6/Zu844HU6g6yONu9bUJdyz2+k/eHmGeDSyW+oEa0hvFsel9gjR4ON06W2c3Pf87 jWFVBcIsX7xkEH5t2ZNLxsq8CIhcLZMZbz0irtZDcWLrTAz0EfHBg== From: Ilya Leoshkevich To: Richard Henderson , Paolo Bonzini Cc: qemu-devel@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 2/3] tests/tcg/multiarch: Improve mutator randomness Date: Mon, 6 Jul 2026 18:51:24 +0200 Message-ID: <20260706165445.57418-3-iii@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260706165445.57418-1-iii@linux.ibm.com> References: <20260706165445.57418-1-iii@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=KsJ9H2WN c=1 sm=1 tr=0 ts=6a4bdddb cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=hE59dl1hCYpwDpkaMNEA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfX9vh0t3prrICM e+B19m9TbgOvdrxJmFW5TZDsPk1o7IIsz3O6btwBBEn1rODjQTmuE9NCehXUbSgawEXjEQk3cZa jelDJa+/0nC8TJxxmC6ZfoNJMXDSp0k= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfX+SaJqKRp4+ub pu3Br6vvDv+QuPMu132Wt4t52esYw0RDdm5wMGQ60Zx/xIrBbV1QVKgpGQH7CuRrJyZ1nStS5yn pXXOrdQldyuDH7sHFwINZ4ImeREtGMt9XFrEeRTvFOrssESoweOYcdSQAOfkWzpplyuNBZg9TZE cNeRaDiscgbeqE77mA3B2q23jhXwFDlLZO6SFFEjf7ARzOC9lYTcmg7hGEOrm/sp+ZFgmvZ9kJ2 tSnlx6l95FRXj8l3YN1xzDlxVHZK8+awkxu6XQ9i/d77f+3ygGhwIXVsDs+RGwWZwMhiqeHD6fE VHqcEBnA36ZwleQk1t+XieocG2KqdUg0GvZzCAwZ6PSJ8HHMq53If0Gl6rNRHR31ZAfHjsNRLvh nwRa5mx0hi2kAyFhpUIMCj4/vitLNizE+qDmKyFDg5EndqdppNdk8kcDakubX0pZRM67u6h5OpW 4ptamP76L6Q6jMRGPNw== X-Proofpoint-ORIG-GUID: wx6Ma9gaKma8is53MmY8eli5daoqev8q X-Proofpoint-GUID: wx6Ma9gaKma8is53MmY8eli5daoqev8q X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-06_02,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607060170 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=iii@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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: qemu development 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 @ibm.com) X-ZM-MESSAGEID: 1783356966507158500 Content-Type: text/plain; charset="utf-8" Currently mutators perform the same actions, because the RNG seed is derived from the current time in seconds. Mix in thread ID. Signed-off-by: Ilya Leoshkevich Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- tests/tcg/multiarch/vma-pthread.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tcg/multiarch/vma-pthread.c b/tests/tcg/multiarch/vma-pt= hread.c index 7045da08fc4..0b8ce9751be 100644 --- a/tests/tcg/multiarch/vma-pthread.c +++ b/tests/tcg/multiarch/vma-pthread.c @@ -11,6 +11,7 @@ * pages, which are guaranteed to have the respective protection bit set. * Two mutator threads change the non-fixed protection bits randomly. */ +#define _GNU_SOURCE #include #include #include @@ -121,7 +122,7 @@ static void *thread_mutate(void *arg) unsigned int seed; int prot, ret; =20 - seed =3D (unsigned int)time(NULL); + seed =3D (unsigned int)time(NULL) + (unsigned int)gettid(); for (i =3D 0; i < 10000; i++) { start_idx =3D rand_r(&seed) & PAGE_IDX_MASK; end_idx =3D rand_r(&seed) & PAGE_IDX_MASK; --=20 2.54.0 From nobody Sun Jul 26 10:59:15 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=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1783356940; cv=none; d=zohomail.com; s=zohoarc; b=TtksJdOGQ/17ftyAs6Y1O7gvOSn6toVo95TXmgm+vyGbfElU54FlGNid3rVf2lF5epZaVZCJAj4o9J+dIcEpXlgGMJMo8Fq6UEjtCkYDfEJrvHGWGlRYlTwrUayEpCMzGtPQODkTjobf6n0eWNjhytWYiP7WcZEmJLW1KcyCN7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783356940; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8ss3E40EI0rdnZNYwr0CI94r9B9laz4ljhng878AcOM=; b=gLYXm/5RzZKJuAexmVAOTp5lVPNU+/4WsjtArgTLk0bniNeBzg/46qb9+8QLs17AlOP+mKVE2OsyQB8QYkBjFT8uroYYmc7mNRcZelRJG/CulgJA/yfOVMc0gbB2rtObD6CcO5o63H0BzvTkjVG4fT/NLgH4igtOg+5QVM6t04o= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783356940830125.72633520170848; Mon, 6 Jul 2026 09:55:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgmaz-0006NS-AZ; Mon, 06 Jul 2026 12:55:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmav-0006Mf-7N for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:57 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgmat-0002z2-4M for qemu-devel@nongnu.org; Mon, 06 Jul 2026 12:54:56 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 666FICY8611101; Mon, 6 Jul 2026 16:54:53 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4f6sp3jhvm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:52 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 666GnePA012929; Mon, 6 Jul 2026 16:54:51 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4f7cvvxkkr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jul 2026 16:54:51 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 666GsncT30278238 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Jul 2026 16:54:49 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9834720040; Mon, 6 Jul 2026 16:54:49 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4F54620043; Mon, 6 Jul 2026 16:54:49 +0000 (GMT) Received: from heavy.ibm.com (unknown [9.111.23.52]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Jul 2026 16:54:49 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=8ss3E40EI0rdnZNYw r0CI94r9B9laz4ljhng878AcOM=; b=Ug2INCj3UZ0M5qAAz/UN3FVKXG7d8ZcQ9 lKRIcwqWjWYw+NLxfrN4TFWWJO4Vin1/kazXpWhXdXtJgAGDIbT07HRK9uqhQoS/ ZBWEqfMlEP5GVYs+ay92b/bHivUi7uxEb2353RsIIFAZOziKMgaAPzKcmjwCz3zz nxUcP3F26Cpii9d0WAdMubob/YXXtFegEY7HoOCm4ZB69Lhicu9JKEs/NwyZNLWV 7R7Y9ytoBOfU3WhGLZ2umvj3Ijy26E1bK+ivebdqseN44TbG+JIteQXYEqE1s+jU 6nmBWG52ueKzfCzheynyXuzUUg8raTd58dU2Rl6atyT996jGrHNHg== From: Ilya Leoshkevich To: Richard Henderson , Paolo Bonzini Cc: qemu-devel@nongnu.org, Ilya Leoshkevich Subject: [PATCH v2 3/3] Revert "tests/tcg: skip the vma-pthread test on CI" Date: Mon, 6 Jul 2026 18:51:25 +0200 Message-ID: <20260706165445.57418-4-iii@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260706165445.57418-1-iii@linux.ibm.com> References: <20260706165445.57418-1-iii@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=KsJ9H2WN c=1 sm=1 tr=0 ts=6a4bdddc cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=MR-Jva-bgZzsNAeRGaEA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfX+sYkR9KsTOqo xaVd7PT9rVgv/+zaveTThbx2lCZ2I1BRBsAD/MF6sTVzzyl/cZRVCrw8rs9HQK5Lr0cCZF6Qezp 6u0Y/pV8gmFqY2t0x4rq+rm8e4x/KjE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA2MDE3MCBTYWx0ZWRfXyze3i9fhFwrL olG7vzKaob/PoQ6PSvDpvCJzgEgIuzvEhqTWh5CjU999j0YG3UcW8tIQxgbCXH9yVA77GMco6ul z2RUszI6Ker7/vIa8IO4jpNt4jyjVBzZPRpYhYPtq1rUgrmmLrDwOKSHQmjkOkZXg+LiaFO56pS nURnXaVaOHxQRed1NI2sUd4w078wBvqP86FVCg+cOzCY7SDl0LLVNepN0g8R/Awfve+r07jnCaK 0rMA4undyIX8SFF1HKdPtu2/Nma/3Nvjbm6gPMOfYfnmQwg57DUshcRonDPKMmNA756enVb9kyD qvO/YX9N9qMqbabzoeaASw1TWRbwFO+aSjheXPQawHZsK7HdcjXfwfmly8x3O8I24X5MUa+8i5j 188vhSc+13xXTp4t0khpGgu8CefPPrq/5umwwXyK8WDijwErPGPA8dqBf6V12yII5HYmiadMnwZ Gkvko4t08r0vZY1L1tg== X-Proofpoint-ORIG-GUID: tXsNdLv-uI2uGb5-u1DrvYcJAePr6Lw4 X-Proofpoint-GUID: tXsNdLv-uI2uGb5-u1DrvYcJAePr6Lw4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-06_02,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607060170 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=iii@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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: qemu development 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 @ibm.com) X-ZM-MESSAGEID: 1783356942942158500 Content-Type: text/plain; charset="utf-8" Now that the page_check_range() race condition is fixed, let vma-pthread run on CI again. This reverts commit 5842de51573fdbd7299ab4b33d64b7446cc07649. Signed-off-by: Ilya Leoshkevich Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson --- tests/tcg/multiarch/Makefile.target | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Make= file.target index 508149d57bd..ab4bf9c5d53 100644 --- a/tests/tcg/multiarch/Makefile.target +++ b/tests/tcg/multiarch/Makefile.target @@ -60,15 +60,6 @@ tb-link: LDFLAGS+=3D-lpthread # code to work around the compiler. sha1: CFLAGS+=3D-Wno-stringop-overread -Wno-unknown-warning-option =20 -# The vma-pthread seems very sensitive on gitlab and we currently -# don't know if its exposing a real bug or the test is flaky. -ifneq ($(GITLAB_CI),) -run-vma-pthread: vma-pthread - $(call skip-test, $<, "flaky on CI?") -run-plugin-vma-pthread-with-%: vma-pthread - $(call skip-test, $<, "flaky on CI?") -endif - run-test-mmap: test-mmap $(call run-test, test-mmap, $(QEMU) $<, $< (default)) =20 --=20 2.54.0