From nobody Fri Aug 18 12:44:04 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RS1lS2BhNz4qT6Z; Fri, 18 Aug 2023 12:44:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RS1lS1f6gz4PM1; Fri, 18 Aug 2023 12:44:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692362644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SmAL8rbqLbeBAwzsr5CYesoopwvjQTEuqPNL9ji9XJk=; b=jdR7sfQay0E9VJHO6fwv6amc5jgCTV06/e4krii29vh2xGvLQe5X6JCj1wngCEeQRJKj1R +RTM3CXnnwG/4knYSsbvGs1wNY9rC611H2yAnWdPhAOJmgWvR+QbUy86q8VyQxL8Ee6rCR 5XOQ9EvHXYj4Auatr9a6NeZjoFdV/zSZJvF0YfYUhyHIME+cXonXzTUSy3u5wX4mBcG2Ga wW9DdbzHGI3kcL1e1aVs480jSp+CYXuw0ECqiuVx/F82sTnKvxeehs9oMX/cSswRVAXYBY 71Jsc1ds1w2/mwx6RDH52GmobKmzroi9khYj1vU5S/PwLx+5KC911hwEYmMG4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692362644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=SmAL8rbqLbeBAwzsr5CYesoopwvjQTEuqPNL9ji9XJk=; b=dR01s7VR9UrPs9JC9zumWtFZ9Vfv0KyjGgUm/peo2ozHhtCNosVXhc4fBs7Fk1Q/vwMX0G bii0RtcmTO2bVPLUJN8hd6TuL+aFNfQN+peHAVWadbCv9FlL+zgT1hML3+pXtTmF90M/sw AI0AVI2fUsrOgSVw0PhqTPWhyiNydgfE9C+c5nCW/c8ms/kipVuRudjC+MOF+geq5GT2UR 1IldAcsVp0YKzHpArzlgrsI/aKUnpkWpw1FqwCFwZDkrN1VNArwP9FM5JRVDYHk8jctodE EbiS/O/tRzJap4E7m68Fwfbv2ahHLHrv7XBdvV0FojTX5ddMriefjg1gnKMUug== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1692362644; a=rsa-sha256; cv=none; b=b579bi+RqrRXPmYfQZaW+uVgd3DzakSkw/+36xNXKzU2m96HM9sq39etbtUAjBgDoyXHrq cVQN/UuoxGUKBTMFECZlardOo5ipWZZuqhfvPmVe1NUgB8TZtgNID0RmK8tLvKESMdqRbp 8f/Gf210jYR4wG/BaUnYLUelMqKqetF9PtAG/EGn3uJWrw0jTE1Ds1Mz3uN2rD4y15Eo/Z avf1xN1N9zosl58fMKH1d+gXGWlk9DBeFbVd5y8M/JhT99HKiLUqW2M8B657eVQuGTunoz Y9j9DjICeuiw74mMIfteJeEm+M9xXyYSdQJ4VD5yRuSJuGibKZQ9MMvpeFjAuw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RS1lS0jLnz21r; Fri, 18 Aug 2023 12:44:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 37ICi4e6067337; Fri, 18 Aug 2023 12:44:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 37ICi4AR067333; Fri, 18 Aug 2023 12:44:04 GMT (envelope-from git) Date: Fri, 18 Aug 2023 12:44:04 GMT Message-Id: <202308181244.37ICi4AR067333@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: c718009884b3 - main - vm_map.c: plug several more places which might modify entry->offset List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c718009884b3d65528deaff24712cbf98e3be656 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c718009884b3d65528deaff24712cbf98e3be656 commit c718009884b3d65528deaff24712cbf98e3be656 Author: Konstantin Belousov AuthorDate: 2023-08-15 19:05:33 +0000 Commit: Konstantin Belousov CommitDate: 2023-08-18 12:43:35 +0000 vm_map.c: plug several more places which might modify entry->offset for the GUARD entries protecting stacks gaps. syzkaller: https://syzkaller.appspot.com/bug?extid=c325d6a75e4fd0a68714 Reviewed by: dougm, markj (previous version) Tested by: pho (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D41475 --- sys/vm/vm_map.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 252b58ad2924..f609d1fd68d7 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -1413,7 +1413,9 @@ vm_map_entry_link(vm_map_t map, vm_map_entry_t entry) KASSERT(entry->end < root->end, ("%s: clip_start not within entry", __func__)); vm_map_splay_findprev(root, &llist); - root->offset += entry->end - root->start; + if ((root->eflags & (MAP_ENTRY_STACK_GAP_DN | + MAP_ENTRY_STACK_GAP_UP)) == 0) + root->offset += entry->end - root->start; root->start = entry->end; max_free_left = vm_map_splay_merge_pred(header, entry, llist); max_free_right = root->max_free = vm_size_max( @@ -1429,7 +1431,9 @@ vm_map_entry_link(vm_map_t map, vm_map_entry_t entry) KASSERT(entry->end == root->end, ("%s: clip_start not within entry", __func__)); vm_map_splay_findnext(root, &rlist); - entry->offset += entry->start - root->start; + if ((entry->eflags & (MAP_ENTRY_STACK_GAP_DN | + MAP_ENTRY_STACK_GAP_UP)) == 0) + entry->offset += entry->start - root->start; root->end = entry->start; max_free_left = root->max_free = vm_size_max( vm_map_splay_merge_left(header, root, llist), @@ -1463,6 +1467,8 @@ vm_map_entry_unlink(vm_map_t map, vm_map_entry_t entry, vm_map_splay_findnext(root, &rlist); if (op == UNLINK_MERGE_NEXT) { rlist->start = root->start; + MPASS((rlist->eflags & (MAP_ENTRY_STACK_GAP_DN | + MAP_ENTRY_STACK_GAP_UP) == 0); rlist->offset = root->offset; } if (llist != header) { @@ -3103,7 +3109,8 @@ vm_map_madvise( entry = vm_map_entry_succ(entry)) { vm_offset_t useEnd, useStart; - if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) != 0) + if ((entry->eflags & (MAP_ENTRY_IS_SUB_MAP | + MAP_ENTRY_GUARD)) != 0) continue; /*