From nobody Mon Sep 16 19:21:54 2024 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1679068646; cv=none; d=zohomail.com; s=zohoarc; b=gbbbMrosAZD/FfeopcbDhLZRqhOnBCbaFckf4GGxJG8h1DoyuY5G3wwl/W62GHnncugPo2naBUVSmM3WeU+wskXsMhhoyXHbGXhIJlzaCqlKl/tQ6Ykpzhp2yg34BSarQnzy3OwU51QZwfEqwA4jINStPdTvelvWkRWiOZ0K/dc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1679068646; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VkbFN5DIOfLGyePi4iUQTqaZQlnmOIVGGAwI9RXEItE=; b=U1rlxJ7XtXlLXOGKXWuNe1FvCiq0cHkoEPOXHRZNU0CJdAXOmNtzlz83/kJJo6Df7GUZ527XoY6iScdU3i8m7D2hAbFfjhll4xBT869aptxAX9AZkE3hUw5WrJy2lnWgl7xBp2UCGDMuOa9DGzSjityUKoQHUiYEeQrLErwXtBQ= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1679068646215810.6664668650591; Fri, 17 Mar 2023 08:57:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pdCQA-0002mz-Kl; Fri, 17 Mar 2023 11:55:10 -0400 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 1pdCQ8-0002mR-Vh for qemu-devel@nongnu.org; Fri, 17 Mar 2023 11:55:09 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pdCQ6-0007yP-6r for qemu-devel@nongnu.org; Fri, 17 Mar 2023 11:55:08 -0400 Received: by mail-pj1-x102d.google.com with SMTP id o6-20020a17090a9f8600b0023f32869993so5663114pjp.1 for ; Fri, 17 Mar 2023 08:55:05 -0700 (PDT) Received: from stoup.. (96-82-119-43-static.hfc.comcastbusiness.net. [96.82.119.43]) by smtp.gmail.com with ESMTPSA id s5-20020a656445000000b004fb3e5681cesm1668986pgv.20.2023.03.17.08.55.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 08:55:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679068504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VkbFN5DIOfLGyePi4iUQTqaZQlnmOIVGGAwI9RXEItE=; b=WwLjmKIOhpaLzbX7LLaeGfdDtv+w4ip4iD0RV7NTl3UtaMmbhIgrFXTEAx5HSoIVOM zgLBDtxITSdz3XfGxadJEiZdwJtlv/EzZKQes3WspGXDduId2ro+duAIgj6Ts3kChkku w8+QIoFIccPnpAWwwrNmjGxoNnQnOQRLYyQcboTxW9M6NqJZp9//aONM9kc2bcBVlQJM /WGXIvka5OTuV+U2NvWlMJCP/VT0Yo5ZHaXBJT7W44JFoC9WNn2DouE618bJMinIdv6W aygqSJdRJw72AuIvGx/mmhK1ftihQHPu08Olx2AYCSIOhsQl9gkQM7AS0MalfZ18woJr PtfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679068504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VkbFN5DIOfLGyePi4iUQTqaZQlnmOIVGGAwI9RXEItE=; b=XHrUXMT4MUQUCm9aFGSA3ghmaxcrxop0Az74aqm7qa/I6jmp51B8lNfUMU+H9BJs0X odVimiK5IdBgpvNlkdh0HjY2jr1PFlgm0YZDnqCw0W1zJtNGpxroEdt5HduGtcGhHyj9 jw3R/ayNEs0cZiKufR7NPgemqqVIJpG6d7y27u0hd/viMEfcNnc5XYT96QQyGcGdv0P9 vM8dtsj+lFf4tiV2xOduaIGOAfaKfHGQsxYS7OhUxRshHuK8L5Tesfs2dENOmGMB2VTU Cf2Za684ksARMsR+SC35kiX0G2siWpCM0mnU2y0oUX7P7wHMb48dxAs5KC+7OIW8+f8A OIbw== X-Gm-Message-State: AO0yUKU506/q9LhosE349WI6Jb21eY0I8NEcuP9kKxVrUoZp8pnI46JM NMAaHpRE+8CTrM2cr/bUatIXtDRNlBgPmHt1aAY= X-Google-Smtp-Source: AK7set/YRobrwvOc64yt8kVJ6+OCO6zWjBnfsI5cB1dTBePOhv9d1ecOreQJ03EqV/gW5kO6+NOO0A== X-Received: by 2002:a05:6a20:8984:b0:d3:626b:976b with SMTP id h4-20020a056a20898400b000d3626b976bmr7487435pzg.26.1679068504437; Fri, 17 Mar 2023 08:55:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 5/9] accel/tcg: Pass last not end to page_reset_target_data Date: Fri, 17 Mar 2023 08:54:51 -0700 Message-Id: <20230317155455.341843-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230317155455.341843-1-richard.henderson@linaro.org> References: <20230317155455.341843-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 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 @linaro.org) X-ZM-MESSAGEID: 1679068646741100001 Pass the address of the last byte to be changed, rather than the first address past the last byte. This avoids overflow when the last page of the address space is involved. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/exec/cpu-all.h | 2 +- accel/tcg/user-exec.c | 11 +++++------ linux-user/mmap.c | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index db38418d93..981c295de9 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -286,7 +286,7 @@ int walk_memory_regions(void *, walk_memory_regions_fn); =20 int page_get_flags(target_ulong address); void page_set_flags(target_ulong start, target_ulong last, int flags); -void page_reset_target_data(target_ulong start, target_ulong end); +void page_reset_target_data(target_ulong start, target_ulong last); int page_check_range(target_ulong start, target_ulong len, int flags); =20 /** diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 035f8096b2..20b6fc2f6e 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -508,7 +508,7 @@ void page_set_flags(target_ulong start, target_ulong la= st, int flags) } =20 if (!flags || reset) { - page_reset_target_data(start, last + 1); + page_reset_target_data(start, last); inval_tb |=3D pageflags_unset(start, last); } if (flags) { @@ -814,15 +814,14 @@ typedef struct TargetPageDataNode { =20 static IntervalTreeRoot targetdata_root; =20 -void page_reset_target_data(target_ulong start, target_ulong end) +void page_reset_target_data(target_ulong start, target_ulong last) { IntervalTreeNode *n, *next; - target_ulong last; =20 assert_memory_lock(); =20 - start =3D start & TARGET_PAGE_MASK; - last =3D TARGET_PAGE_ALIGN(end) - 1; + start &=3D TARGET_PAGE_MASK; + last |=3D ~TARGET_PAGE_MASK; =20 for (n =3D interval_tree_iter_first(&targetdata_root, start, last), next =3D n ? interval_tree_iter_next(n, start, last) : NULL; @@ -885,7 +884,7 @@ void *page_get_target_data(target_ulong address) return t->data[(page - region) >> TARGET_PAGE_BITS]; } #else -void page_reset_target_data(target_ulong start, target_ulong end) { } +void page_reset_target_data(target_ulong start, target_ulong last) { } #endif /* TARGET_PAGE_DATA_SIZE */ =20 /* The softmmu versions of these helpers are in cputlb.c. */ diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 9c70f51d97..0aa8ae7356 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -946,7 +946,7 @@ abi_long target_madvise(abi_ulong start, abi_ulong len_= in, int advice) if (can_passthrough_madvise(start, end)) { ret =3D get_errno(madvise(g2h_untagged(start), len, advice)); if ((advice =3D=3D MADV_DONTNEED) && (ret =3D=3D 0)) { - page_reset_target_data(start, start + len); + page_reset_target_data(start, start + len - 1); } } } --=20 2.34.1