From nobody Thu Jun 4 00:36:25 2026 X-Original-To: dev-commits-src-branches@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 4gW5Gd4hXqz6h687 for ; Thu, 04 Jun 2026 00:36:25 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gW5Gd0cwQz3pyH for ; Thu, 04 Jun 2026 00:36:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780533385; 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=+qpIxpqL7K3KLvpwbt8qz2ATXzu7iPN/b+750zi0LGE=; b=TKZmN9dhGp3+4j3ksJKuEOoVxmAM26qVKzWK/EwMsIufdYe/t1EjqMazBdsYkxCMVD8l4M fKdyrnKKlCbPIXfPFYvPiwaotTR8UTttl2XiHZ2pyYxkL7srtzSFBsIyx3OyT7oorRIGT3 wZB0NW41PZK7PmMFfMpybiTT2P9oNKEmh+dNZmlzyEBzu78VuPBXW5rhh4JzWvK3wktZkR SFcu7sQlYBItyztl8a6ezQtgOBykNNTMBfccxktynErUh125DGW1EfL4G9qAE/f9E1Jrd4 7v4wAqV8gKnIrdo6qXD8LDlNUnal4R7qNtZudi8ZywwoZeFv362Covoe2BIQgQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1780533385; a=rsa-sha256; cv=none; b=jQOLjDGKhn0/f4cAFMj/VhjfWyZ6hnoH+rB7o4/XtTs29RE7V4mVufKm7+FhbCmrH8tL/f aosAulz25cEFikMCktjw2hQiaiL4Yeb8fIC9aotvkeC9UlE9VpsLdSh5kD0Qi/qPAa6h5m Ju+L/khElFJ6pZG30ny8kY5M9MAuC1cxu5QWzn/q5TiE/A0Fmrhac51093CquWkhIxh7lf S5hiK5p1K2/MVhgGU4Yv58nhgJuhOqiHMUgzS2fZHJC6U4QQKBGNZo+KF39TSPeeJJs8D5 pCzJS+H7w3HjmoKwZWJaCNGttSvv5TaDSHGZwJyo36fZ5a8GwqSxAbONLqxrUQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780533385; 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=+qpIxpqL7K3KLvpwbt8qz2ATXzu7iPN/b+750zi0LGE=; b=g3vGP7tghPuytsB7sTv2Gpof5idej5yUzxg8NMEmi2L7oPt//dKrpTvQHfDS/mnPhQ/b05 hbtEGrB5A9eXZSHzgk46EDXq+Yi9HL7//93AFAkeVb3AgHcZZIgAqjf3faSK9LQbXu6Ma+ FBjp3TEQ65aFrow+ZuNEYeI9IgLkHOdcKvfYAHj2PR+TNs6iHc1K80ML3YjjSrayqFvV4e FZWWQsnY+ly/2LQucypPM6Z0umrtm2potMwGZDBGNG2ens0cOZ9a/5tLzjCgNYc+SooA5j pPcqMmHJqpVgk+voSEQ7cytFA2svIkmXfZ0AgrtPu5VP9HDoGCuQ+wtnV0TAig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gW5Gd08cvzb26 for ; Thu, 04 Jun 2026 00:36:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 20824 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 04 Jun 2026 00:36:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 5377cd66852c - stable/15 - sys: add safe_read(9) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 5377cd66852c13e3a5f29f2ccc0c0e14b7431c11 Auto-Submitted: auto-generated Date: Thu, 04 Jun 2026 00:36:25 +0000 Message-Id: <6a20c889.20824.3034595d@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5377cd66852c13e3a5f29f2ccc0c0e14b7431c11 commit 5377cd66852c13e3a5f29f2ccc0c0e14b7431c11 Author: Konstantin Belousov AuthorDate: 2025-03-29 17:17:01 +0000 Commit: Konstantin Belousov CommitDate: 2026-06-04 00:34:43 +0000 sys: add safe_read(9) (cherry picked from commit 7b2702ee25f5230011fa7f8f650b65b37248fcca) --- sys/amd64/amd64/machdep.c | 18 ++++++++++++++++++ sys/sys/systm.h | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index d51e5501aca9..e337337fd8e7 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1866,6 +1866,24 @@ wrmsr_early_safe_end(void) memset_early(&idt0[i], 0, sizeof(idt0[0])); } +int +safe_read(vm_offset_t addr, char *valp) +{ + struct uio uio; + struct iovec iov; + + iov.iov_base = valp; + iov.iov_len = 1; + uio.uio_offset = addr; + uio.uio_iov = &iov; + uio.uio_iovcnt = 1; + uio.uio_resid = 1; + uio.uio_segflg = UIO_SYSSPACE; + uio.uio_rw = UIO_READ; + uio.uio_td = NULL; + return (uiomove_mem(UIO_MEM_KMEM, &uio)); +} + #ifdef KDB /* diff --git a/sys/sys/systm.h b/sys/sys/systm.h index c4e0aafac452..d6488f45acae 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -563,6 +563,14 @@ void intr_prof_stack_use(struct thread *td, struct trapframe *frame); void counted_warning(unsigned *counter, const char *msg); +/* + * Safely read one byte of kernel memory at address addr, placing the + * value into *valp. Returns 0 on success, EFAULT if read was + * impossible, e.g. due to the address not being mapped or not having + * necessary permissions. + */ +int safe_read(vm_offset_t addr, char *valp); + /* * APIs to manage deprecation and obsolescence. */