aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile6
-rw-r--r--lib/libc/i386/gen/makecontext.c2
-rw-r--r--lib/libc/net/gai_strerror.c44
-rw-r--r--lib/libc/stdlib/malloc/jemalloc/Makefile.inc2
-rw-r--r--lib/libc/tests/stdtime/Makefile4
-rw-r--r--lib/libc/tests/stdtime/detect_tz_changes_test.c92
-rw-r--r--lib/libcrypt/Makefile2
-rw-r--r--lib/libelftc/Makefile1
-rw-r--r--lib/libifconfig/Makefile1
-rw-r--r--lib/libifconfig/Symbol.map2
-rw-r--r--lib/libifconfig/libifconfig.h1
-rw-r--r--lib/libiscsiutil/Makefile1
-rw-r--r--lib/libnetbsd/Makefile1
-rw-r--r--lib/libnvmf/Makefile1
-rw-r--r--lib/libnvmf/nvmf_tcp.c2
-rw-r--r--lib/libopenbsd/Makefile1
-rw-r--r--lib/libpfctl/Makefile1
-rw-r--r--lib/libpfctl/libpfctl.c22
-rw-r--r--lib/libpmcstat/Makefile1
-rw-r--r--lib/libprocstat/libprocstat.c3
-rw-r--r--lib/libsm/Makefile1
-rw-r--r--lib/libsmdb/Makefile1
-rw-r--r--lib/libsmutil/Makefile1
-rw-r--r--lib/libsys/copy_file_range.235
-rw-r--r--lib/libsys/stat.25
-rw-r--r--lib/libsysdecode/Makefile2
-rw-r--r--lib/libsysdecode/sysdecode.32
-rw-r--r--lib/libsysdecode/sysdecode_abi_to_freebsd_errno.32
-rw-r--r--lib/libsysdecode/sysdecode_syscallname.3 (renamed from lib/libsysdecode/sysdecode_syscallnames.3)6
-rw-r--r--lib/libtelnet/Makefile1
-rw-r--r--lib/libutil++/Makefile4
-rw-r--r--lib/libutil++/freebsd__FILE_up.3 (renamed from lib/libutil++/freebsd::FILE_up.3)0
-rw-r--r--lib/libutil++/freebsd__addrinfo_up.3 (renamed from lib/libutil++/freebsd::addrinfo_up.3)0
-rw-r--r--lib/libutil++/freebsd__fd_up.3 (renamed from lib/libutil++/freebsd::fd_up.3)0
-rw-r--r--lib/libutil++/freebsd__malloc_up.3 (renamed from lib/libutil++/freebsd::malloc_up.3)0
-rw-r--r--lib/libutil++/freebsd__nvlist_up.3 (renamed from lib/libutil++/freebsd::nvlist_up.3)0
-rw-r--r--lib/libutil++/freebsd__pidfile.3 (renamed from lib/libutil++/freebsd::pidfile.3)0
-rw-r--r--lib/libutil++/freebsd__stringf.3 (renamed from lib/libutil++/freebsd::stringf.3)0
-rw-r--r--lib/libutil/mntopts.c1
39 files changed, 166 insertions, 85 deletions
diff --git a/lib/Makefile b/lib/Makefile
index 9447cc4551c0..2b7cf2fdcb7d 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -179,12 +179,12 @@ SUBDIR.${MK_FDT}+= libfdt
SUBDIR.${MK_FILE}+= libmagic
SUBDIR.${MK_GPIO}+= libgpio
.if ${MK_MITKRB5} == "no"
-SUBDIR.${MK_GSSAPI}+= libgssapi
+SUBDIR.${MK_KERBEROS}+= libgssapi
.endif
-SUBDIR.${MK_GSSAPI}+= librpcsec_gss
+SUBDIR.${MK_KERBEROS}+= librpcsec_gss
SUBDIR.${MK_ICONV}+= libiconv_modules
.if ${MK_MITKRB5} == "no"
-SUBDIR.${MK_KERBEROS_SUPPORT}+= libcom_err
+SUBDIR.${MK_KERBEROS}+= libcom_err
.endif
SUBDIR.${MK_LDNS}+= libldns
SUBDIR.${MK_STATS}+= libstats
diff --git a/lib/libc/i386/gen/makecontext.c b/lib/libc/i386/gen/makecontext.c
index 7b4845ac6bee..9fedd8b99c47 100644
--- a/lib/libc/i386/gen/makecontext.c
+++ b/lib/libc/i386/gen/makecontext.c
@@ -124,7 +124,7 @@ __makecontext(ucontext_t *ucp, void (*start)(void), int argc, ...)
/*
* Setup the top of the stack with the user start routine
- * followed by all of its aguments and the pointer to the
+ * followed by all of its arguments and the pointer to the
* ucontext. We need to leave a spare spot at the top of
* the stack because setcontext will move eip to the top
* of the stack before returning.
diff --git a/lib/libc/net/gai_strerror.c b/lib/libc/net/gai_strerror.c
index 0d4303e76a73..23f58b763573 100644
--- a/lib/libc/net/gai_strerror.c
+++ b/lib/libc/net/gai_strerror.c
@@ -45,22 +45,22 @@
* Entries EAI_ADDRFAMILY (1) and EAI_NODATA (7) were omitted from RFC 3493,
* but are or may be used as extensions or in old code.
*/
-static const char *ai_errlist[] = {
- "Success", /* 0 */
- "Address family for hostname not supported", /* EAI_ADDRFAMILY */
- "Name could not be resolved at this time", /* EAI_AGAIN */
- "Flags parameter had an invalid value", /* EAI_BADFLAGS */
- "Non-recoverable failure in name resolution", /* EAI_FAIL */
- "Address family not recognized", /* EAI_FAMILY */
- "Memory allocation failure", /* EAI_MEMORY */
- "No address associated with hostname", /* EAI_NODATA*/
- "Name does not resolve", /* EAI_NONAME */
- "Service was not recognized for socket type", /* EAI_SERVICE */
- "Intended socket type was not recognized", /* EAI_SOCKTYPE */
- "System error returned in errno", /* EAI_SYSTEM */
- "Invalid value for hints", /* EAI_BADHINTS */
- "Resolved protocol is unknown", /* EAI_PROTOCOL */
- "Argument buffer overflow" /* EAI_OVERFLOW */
+static const char *const ai_errlist[] = {
+ [0] = "Success",
+ [EAI_ADDRFAMILY] = "Address family for hostname not supported",
+ [EAI_AGAIN] = "Name could not be resolved at this time",
+ [EAI_BADFLAGS] = "Flags parameter had an invalid value",
+ [EAI_FAIL] = "Non-recoverable failure in name resolution",
+ [EAI_FAMILY] = "Address family not recognized",
+ [EAI_MEMORY] = "Memory allocation failure",
+ [EAI_NODATA] = "No address associated with hostname",
+ [EAI_NONAME] = "Name does not resolve",
+ [EAI_SERVICE] = "Service was not recognized for socket type",
+ [EAI_SOCKTYPE] = "Intended socket type was not recognized",
+ [EAI_SYSTEM] = "System error returned in errno",
+ [EAI_BADHINTS] = "Invalid value for hints",
+ [EAI_PROTOCOL] = "Resolved protocol is unknown",
+ [EAI_OVERFLOW] = "Argument buffer overflow",
};
#if defined(NLS)
@@ -72,7 +72,7 @@ static int gai_keycreated = 0;
static void
gai_keycreate(void)
{
- gai_keycreated = (thr_keycreate(&gai_key, free) == 0);
+ gai_keycreated = thr_keycreate(&gai_key, free) == 0;
}
#endif
@@ -82,7 +82,9 @@ gai_strerror(int ecode)
#if defined(NLS)
nl_catd catd;
char *buf;
+ int saved_errno;
+ saved_errno = errno;
if (thr_main() != 0)
buf = gai_buf;
else {
@@ -110,11 +112,13 @@ gai_strerror(int ecode)
strlcpy(buf, catgets(catd, 3, NL_MSGMAX, "Unknown error"),
sizeof(gai_buf));
catclose(catd);
- return buf;
+ errno = saved_errno;
+ return (buf);
thr_err:
+ errno = saved_errno;
#endif
if (ecode >= 0 && ecode < EAI_MAX)
- return ai_errlist[ecode];
- return "Unknown error";
+ return (ai_errlist[ecode]);
+ return ("Unknown error");
}
diff --git a/lib/libc/stdlib/malloc/jemalloc/Makefile.inc b/lib/libc/stdlib/malloc/jemalloc/Makefile.inc
index b9e34edfdea5..7722a7b755f3 100644
--- a/lib/libc/stdlib/malloc/jemalloc/Makefile.inc
+++ b/lib/libc/stdlib/malloc/jemalloc/Makefile.inc
@@ -14,6 +14,8 @@ CFLAGS+=-I${SRCTOP}/contrib/jemalloc/include -I${LIBC_SRCTOP}/stdlib/malloc/jema
.if ${MK_JEMALLOC_LG_VADDR_WIDE} != no
CFLAGS+=-D_USE_LG_VADDR_WIDE
.endif
+CFLAGS.gcc+=-Wno-error=missing-braces
+
.for src in ${JEMALLOCSRCS}
MISRCS+=jemalloc_${src}
diff --git a/lib/libc/tests/stdtime/Makefile b/lib/libc/tests/stdtime/Makefile
index adb883cc5b9a..6b9068e1641b 100644
--- a/lib/libc/tests/stdtime/Makefile
+++ b/lib/libc/tests/stdtime/Makefile
@@ -1,8 +1,10 @@
.include <src.opts.mk>
ATF_TESTS_C+= strptime_test
-.if ${MK_DETECT_TZ_CHANGES} != "no"
ATF_TESTS_C+= detect_tz_changes_test
+
+.if ${MK_DETECT_TZ_CHANGES} != "no"
+CFLAGS.detect_tz_changes_test+= -DDETECT_TZ_CHANGES
.endif
TESTSDIR:= ${TESTSBASE}/${RELDIR:C/libc\/tests/libc/}
diff --git a/lib/libc/tests/stdtime/detect_tz_changes_test.c b/lib/libc/tests/stdtime/detect_tz_changes_test.c
index 9722546747fd..e3fdcc0baef7 100644
--- a/lib/libc/tests/stdtime/detect_tz_changes_test.c
+++ b/lib/libc/tests/stdtime/detect_tz_changes_test.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
+#include <sys/param.h>
+#include <sys/conf.h>
#include <sys/stat.h>
#include <sys/wait.h>
@@ -20,7 +22,29 @@
#include <atf-c.h>
+static const struct tzcase {
+ const char *tzfn;
+ const char *expect;
+} tzcases[] = {
+ /*
+ * A handful of time zones and the expected result of
+ * strftime("%z (%Z)", tm) when that time zone is active
+ * and tm represents a date in the summer of 2025.
+ */
+ { "America/Vancouver", "-0700 (PDT)" },
+ { "America/New_York", "-0400 (EDT)" },
+ { "Europe/London", "+0100 (BST)" },
+ { "Europe/Paris", "+0200 (CEST)" },
+ { "Asia/Kolkata", "+0530 (IST)" },
+ { "Asia/Tokyo", "+0900 (JST)" },
+ { "Australia/Canberra", "+1000 (AEST)" },
+ { "UTC", "+0000 (UTC)" },
+ { 0 },
+};
+
static const time_t then = 1751328000; /* 2025-07-01 00:00:00 UTC */
+
+#ifdef DETECT_TZ_CHANGES
static const char *tz_change_interval_sym = "__tz_change_interval";
static int *tz_change_interval_p;
static const int tz_change_interval = 3;
@@ -91,25 +115,6 @@ ATF_TC_HEAD(detect_tz_changes, tc)
}
ATF_TC_BODY(detect_tz_changes, tc)
{
- static const struct tzcase {
- const char *tzfn;
- const char *expect;
- } tzcases[] = {
- /*
- * A handful of time zones and the expected result of
- * strftime("%z (%Z)", tm) when that time zone is active
- * and tm represents a date in the summer of 2025.
- */
- { "America/Vancouver", "-0700 (PDT)" },
- { "America/New_York", "-0400 (EDT)" },
- { "Europe/London", "+0100 (BST)" },
- { "Europe/Paris", "+0200 (CEST)" },
- { "Asia/Kolkata", "+0530 (IST)" },
- { "Asia/Tokyo", "+0900 (JST)" },
- { "Australia/Canberra", "+1000 (AEST)" },
- { "UTC", "+0000 (UTC)" },
- { 0 },
- };
char obuf[1024] = "";
char ebuf[1024] = "";
struct pollfd fds[3];
@@ -271,11 +276,60 @@ ATF_TC_BODY(detect_tz_changes, tc)
ATF_REQUIRE(WIFEXITED(status));
ATF_REQUIRE_EQ(0, WEXITSTATUS(status));
}
+#endif /* DETECT_TZ_CHANGES */
+
+static void
+test_tz_env(const char *tzval, const char *expect)
+{
+ char buf[128];
+ struct tm *tm;
+ size_t len;
+
+ setenv("TZ", tzval, 1);
+ ATF_REQUIRE((tm = localtime(&then)) != NULL);
+ len = strftime(buf, sizeof(buf), "%z (%Z)", tm);
+ ATF_REQUIRE(len > 0);
+ ATF_CHECK_STREQ(expect, buf);
+}
+
+ATF_TC(tz_env);
+ATF_TC_HEAD(tz_env, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Test TZ environment variable");
+}
+ATF_TC_BODY(tz_env, tc)
+{
+ const struct tzcase *tzcase;
+
+ for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++)
+ test_tz_env(tzcase->tzfn, tzcase->expect);
+}
+
+ATF_TC(tz_env_setugid);
+ATF_TC_HEAD(tz_env_setugid, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Test TZ environment variable "
+ "in setugid process");
+ atf_tc_set_md_var(tc, "require.user", "root");
+}
+ATF_TC_BODY(tz_env_setugid, tc)
+{
+ const struct tzcase *tzcase;
+
+ ATF_REQUIRE_EQ(0, seteuid(UID_NOBODY));
+ ATF_REQUIRE(issetugid());
+ for (tzcase = tzcases; tzcase->tzfn != NULL; tzcase++)
+ test_tz_env(tzcase->tzfn, tzcase->expect);
+}
ATF_TP_ADD_TCS(tp)
{
+#ifdef DETECT_TZ_CHANGES
debugging = !getenv("__RUNNING_INSIDE_ATF_RUN") &&
isatty(STDERR_FILENO);
ATF_TP_ADD_TC(tp, detect_tz_changes);
+#endif /* DETECT_TZ_CHANGES */
+ ATF_TP_ADD_TC(tp, tz_env);
+ ATF_TP_ADD_TC(tp, tz_env_setugid);
return (atf_no_error());
}
diff --git a/lib/libcrypt/Makefile b/lib/libcrypt/Makefile
index e939bae1bc25..2580c398155e 100644
--- a/lib/libcrypt/Makefile
+++ b/lib/libcrypt/Makefile
@@ -45,7 +45,7 @@ libcrypt.ald: ${.CURDIR}/${STATIC_LDSCRIPT}
all: ${STATIC_LDSCRIPT} libcrypt.ald
install-libcrypt.a: libcrypt.ald
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${INSTALL} ${DEV_TAG_ARGS} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} libcrypt.ald ${DESTDIR}${_LIBDIR}/lib${LIB}.a
realinstall: install-libcrypt.a
diff --git a/lib/libelftc/Makefile b/lib/libelftc/Makefile
index a932b0c4b2a4..a6079b817d87 100644
--- a/lib/libelftc/Makefile
+++ b/lib/libelftc/Makefile
@@ -1,5 +1,6 @@
.include <bsd.own.mk>
+PACKAGE= toolchain
INTERNALLIB=
ELFTCDIR= ${SRCTOP}/contrib/elftoolchain
diff --git a/lib/libifconfig/Makefile b/lib/libifconfig/Makefile
index e8e0651dc0d6..fb7c659e068c 100644
--- a/lib/libifconfig/Makefile
+++ b/lib/libifconfig/Makefile
@@ -1,4 +1,3 @@
-PACKAGE= lib${LIB}
LIB= ifconfig
INTERNALLIB= true
diff --git a/lib/libifconfig/Symbol.map b/lib/libifconfig/Symbol.map
index 2d80fb31652a..2e11ff963909 100644
--- a/lib/libifconfig/Symbol.map
+++ b/lib/libifconfig/Symbol.map
@@ -40,7 +40,6 @@ FBSD_1.6 {
ifconfig_open;
ifconfig_set_capability;
ifconfig_set_description;
- ifconfig_set_fib;
ifconfig_set_metric;
ifconfig_set_mtu;
ifconfig_set_name;
@@ -81,7 +80,6 @@ FBSD_1.6 {
ifconfig_sfp_fc_speed_symbol;
ifconfig_sfp_id_description;
ifconfig_sfp_id_display;
- ifconfig_sfp_id_is_qsfp;
ifconfig_sfp_id_symbol;
ifconfig_sfp_rev_description;
ifconfig_sfp_rev_symbol;
diff --git a/lib/libifconfig/libifconfig.h b/lib/libifconfig/libifconfig.h
index b2f0cf9744ea..a5ce7b375830 100644
--- a/lib/libifconfig/libifconfig.h
+++ b/lib/libifconfig/libifconfig.h
@@ -171,7 +171,6 @@ int ifconfig_set_name(ifconfig_handle_t *h, const char *name,
const char *newname);
int ifconfig_get_orig_name(ifconfig_handle_t *h, const char *ifname,
char **orig_name);
-int ifconfig_set_fib(ifconfig_handle_t *h, const char *name, int fib);
int ifconfig_get_fib(ifconfig_handle_t *h, const char *name, int *fib);
int ifconfig_set_mtu(ifconfig_handle_t *h, const char *name, const int mtu);
int ifconfig_get_mtu(ifconfig_handle_t *h, const char *name, int *mtu);
diff --git a/lib/libiscsiutil/Makefile b/lib/libiscsiutil/Makefile
index c99fb6366536..d9762302fd40 100644
--- a/lib/libiscsiutil/Makefile
+++ b/lib/libiscsiutil/Makefile
@@ -1,6 +1,5 @@
LIB= iscsiutil
INTERNALLIB=
-PACKAGE= iscsi
INCS= libiscsiutil.h
diff --git a/lib/libnetbsd/Makefile b/lib/libnetbsd/Makefile
index 1639caf20d6b..4088c2b57176 100644
--- a/lib/libnetbsd/Makefile
+++ b/lib/libnetbsd/Makefile
@@ -1,6 +1,5 @@
.include <bsd.own.mk>
-PACKAGE=lib${LIB}
LIB= netbsd
CFLAGS+= -I${.CURDIR}
diff --git a/lib/libnvmf/Makefile b/lib/libnvmf/Makefile
index b01f5ab82cac..945c31a2986c 100644
--- a/lib/libnvmf/Makefile
+++ b/lib/libnvmf/Makefile
@@ -3,7 +3,6 @@
LIB= nvmf
INTERNALLIB=
-PACKAGE= nvmf
INCS= libnvmf.h
diff --git a/lib/libnvmf/nvmf_tcp.c b/lib/libnvmf/nvmf_tcp.c
index 6f41ca7ff502..48ddabaf506a 100644
--- a/lib/libnvmf/nvmf_tcp.c
+++ b/lib/libnvmf/nvmf_tcp.c
@@ -728,7 +728,7 @@ nvmf_tcp_handle_r2t(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
}
/*
- * XXX: The spec does not specify how to handle R2T tranfers
+ * XXX: The spec does not specify how to handle R2T transfers
* out of range of the original command.
*/
data_len = le32toh(r2t->r2tl);
diff --git a/lib/libopenbsd/Makefile b/lib/libopenbsd/Makefile
index dca1c08b0aed..53bd0200934f 100644
--- a/lib/libopenbsd/Makefile
+++ b/lib/libopenbsd/Makefile
@@ -1,4 +1,3 @@
-PACKAGE=lib${LIB}
LIB= openbsd
SRCS= imsg-buffer.c \
imsg.c \
diff --git a/lib/libpfctl/Makefile b/lib/libpfctl/Makefile
index d301d7850b44..4b16d81181a3 100644
--- a/lib/libpfctl/Makefile
+++ b/lib/libpfctl/Makefile
@@ -1,4 +1,3 @@
-PACKAGE= lib${LIB}
LIB= pfctl
INTERNALLIB= true
diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c
index cbd9d4677146..0037f31df04b 100644
--- a/lib/libpfctl/libpfctl.c
+++ b/lib/libpfctl/libpfctl.c
@@ -2453,7 +2453,7 @@ _pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct p
snl_add_msg_attr_table(&nw, PF_TA_TABLE, tbl);
snl_add_msg_attr_u32(&nw, PF_TA_FLAGS, flags);
- for (int i = 0; i < size && i < 256; i++)
+ for (int i = 0; i < size; i++)
snl_add_msg_attr_pfr_addr(&nw, PF_TA_ADDR, &addrs[i]);
if ((hdr = snl_finalize_msg(&nw)) == NULL)
@@ -2481,19 +2481,18 @@ pfctl_table_add_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pf
int ret;
int off = 0;
int partial_added;
+ int chunk_size;
do {
- ret = _pfctl_table_add_addrs_h(h, tbl, &addr[off], size - off, &partial_added, flags);
+ chunk_size = MIN(size - off, 256);
+ ret = _pfctl_table_add_addrs_h(h, tbl, &addr[off], chunk_size, &partial_added, flags);
if (ret != 0)
break;
if (nadd)
*nadd += partial_added;
- off += partial_added;
+ off += chunk_size;
} while (off < size);
- if (nadd)
- *nadd = off;
-
return (ret);
}
@@ -2521,7 +2520,7 @@ _pfctl_table_del_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct p
snl_add_msg_attr_table(&nw, PF_TA_TABLE, tbl);
snl_add_msg_attr_u32(&nw, PF_TA_FLAGS, flags);
- for (int i = 0; i < size && i < 256; i++)
+ for (int i = 0; i < size; i++)
snl_add_msg_attr_pfr_addr(&nw, PF_TA_ADDR, &addrs[i]);
if ((hdr = snl_finalize_msg(&nw)) == NULL)
@@ -2572,20 +2571,19 @@ pfctl_table_del_addrs_h(struct pfctl_handle *h, struct pfr_table *tbl, struct pf
int ret;
int off = 0;
int partial_deleted;
+ int chunk_size;
do {
- ret = _pfctl_table_del_addrs_h(h, tbl, &addr[off], size - off,
+ chunk_size = MIN(size - off, 256);
+ ret = _pfctl_table_del_addrs_h(h, tbl, &addr[off], chunk_size,
&partial_deleted, flags);
if (ret != 0)
break;
if (ndel)
*ndel += partial_deleted;
- off += partial_deleted;
+ off += chunk_size;
} while (off < size);
- if (ndel)
- *ndel = off;
-
return (ret);
}
diff --git a/lib/libpmcstat/Makefile b/lib/libpmcstat/Makefile
index d1d23cdd57c7..7ca93329e20f 100644
--- a/lib/libpmcstat/Makefile
+++ b/lib/libpmcstat/Makefile
@@ -1,4 +1,3 @@
-PACKAGE=lib${LIB}
LIB= pmcstat
INTERNALLIB=
diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c
index eb8137f6c76f..1651cbc6820f 100644
--- a/lib/libprocstat/libprocstat.c
+++ b/lib/libprocstat/libprocstat.c
@@ -1330,8 +1330,7 @@ procstat_get_vnode_info_kvm(kvm_t *kd, struct filestat *fst,
return (1);
}
vn->vn_mntdir = getmnton(kd, vnode.v_mount);
- if ((vnode.v_type == VBLK || vnode.v_type == VCHR) &&
- vnode.v_rdev != NULL){
+ if (VTYPE_ISDEV(vnode.v_type) && vnode.v_rdev != NULL) {
vn->vn_dev = dev2udev(kd, vnode.v_rdev);
(void)kdevtoname(kd, vnode.v_rdev, vn->vn_devname);
} else {
diff --git a/lib/libsm/Makefile b/lib/libsm/Makefile
index 448abad59192..538407754f6a 100644
--- a/lib/libsm/Makefile
+++ b/lib/libsm/Makefile
@@ -1,6 +1,5 @@
.include <src.opts.mk>
-PACKAGE=sendmail
SENDMAIL_DIR=${SRCTOP}/contrib/sendmail
.PATH: ${SENDMAIL_DIR}/libsm
diff --git a/lib/libsmdb/Makefile b/lib/libsmdb/Makefile
index 898af78d6101..e82deda57615 100644
--- a/lib/libsmdb/Makefile
+++ b/lib/libsmdb/Makefile
@@ -1,4 +1,3 @@
-PACKAGE=lib${LIB}
SENDMAIL_DIR=${SRCTOP}/contrib/sendmail
.PATH: ${SENDMAIL_DIR}/libsmdb
diff --git a/lib/libsmutil/Makefile b/lib/libsmutil/Makefile
index ef526ff8656d..37ad71e84f58 100644
--- a/lib/libsmutil/Makefile
+++ b/lib/libsmutil/Makefile
@@ -1,6 +1,5 @@
.include <src.opts.mk>
-PACKAGE=lib${LIB}
SENDMAIL_DIR=${SRCTOP}/contrib/sendmail
.PATH: ${SENDMAIL_DIR}/libsmutil
diff --git a/lib/libsys/copy_file_range.2 b/lib/libsys/copy_file_range.2
index bcd9170842d5..829a5a5d3c13 100644
--- a/lib/libsys/copy_file_range.2
+++ b/lib/libsys/copy_file_range.2
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd December 28, 2023
+.Dd August 16, 2025
.Dt COPY_FILE_RANGE 2
.Os
.Sh NAME
@@ -74,6 +74,7 @@ argument must be opened for reading and the
.Fa outfd
argument must be opened for writing, but not
.Dv O_APPEND .
+.Pp
If
.Fa inoffp
or
@@ -101,9 +102,29 @@ respectively will be used/updated and the file offset for
or
.Fa outfd
respectively will not be affected.
-The
+.Pp
+The only
+.Fa flags
+argument currently defined is
+.Dv COPY_FILE_RANGE_CLONE .
+When this flag is set,
+.Fn copy_file_range
+will return
+.Er EOPNOTSUPP
+if the copy cannot be done via
+block cloning.
+When
.Fa flags
-argument must be 0.
+is 0, a file system may do the copy via block cloning
+or by data copying.
+Block cloning is only possible when the offsets (plus
+.Fa len
+if not to EOF on the input file) are block
+aligned.
+The correct block alignment can normally be acquired via the
+.Dv _PC_CLONE_BLKSIZE
+query for
+.Xr pathconf 2 .
.Pp
This system call attempts to maintain holes in the output file for
the byte range being copied.
@@ -203,9 +224,15 @@ refers to a directory.
File system that stores
.Fa outfd
is full.
+.It Bq Er EOPNOTSUPP
+Cannot do the copy via block cloning and the
+.Dv COPY_FILE_RANGE_CLONE
+.Fa flags
+argument is specified.
.El
.Sh SEE ALSO
-.Xr lseek 2
+.Xr lseek 2 ,
+.Xr pathconf 2
.Sh STANDARDS
The
.Fn copy_file_range
diff --git a/lib/libsys/stat.2 b/lib/libsys/stat.2
index bd9005710147..8107740bd901 100644
--- a/lib/libsys/stat.2
+++ b/lib/libsys/stat.2
@@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd March 30, 2021
+.Dd August 17, 2025
.Dt STAT 2
.Os
.Sh NAME
@@ -169,6 +169,9 @@ Flags enabled for the file.
See
.Xr chflags 2
for the list of flags and their description.
+.It Va st_rdev
+Numeric ID of the device referenced by the file, if the file is a
+character or block special; otherwise unspecified.
.El
.Pp
The
diff --git a/lib/libsysdecode/Makefile b/lib/libsysdecode/Makefile
index ca020552a6e9..11f45355b8e2 100644
--- a/lib/libsysdecode/Makefile
+++ b/lib/libsysdecode/Makefile
@@ -27,7 +27,7 @@ MAN= sysdecode.3 \
sysdecode_sigcode.3 \
sysdecode_sockopt_name.3 \
sysdecode_socket_protocol.3 \
- sysdecode_syscallnames.3 \
+ sysdecode_syscallname.3 \
sysdecode_utrace.3
MLINKS= sysdecode_abi_to_freebsd_errno.3 sysdecode_freebsd_to_abi_errno.3
MLINKS+=sysdecode_enum.3 sysdecode_acltype.3 \
diff --git a/lib/libsysdecode/sysdecode.3 b/lib/libsysdecode/sysdecode.3
index 0aa4155c004b..32f7fad4e6c5 100644
--- a/lib/libsysdecode/sysdecode.3
+++ b/lib/libsysdecode/sysdecode.3
@@ -73,7 +73,7 @@ A placeholder for use when the ABI is not known.
.Xr sysdecode_sigcode 3 ,
.Xr sysdecode_socket_protocol 3 ,
.Xr sysdecode_sockopt_name 3 ,
-.Xr sysdecode_syscallnames 3 ,
+.Xr sysdecode_syscallname 3 ,
.Xr sysdecode_utrace 3
.Sh HISTORY
The
diff --git a/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3 b/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
index 8f710d1e3756..51955f062393 100644
--- a/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
+++ b/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
@@ -89,4 +89,4 @@ see
.Xr sysdecode 3 .
.Sh SEE ALSO
.Xr sysdecode 3 ,
-.Xr sysdecode_syscallnames 3
+.Xr sysdecode_syscallname 3
diff --git a/lib/libsysdecode/sysdecode_syscallnames.3 b/lib/libsysdecode/sysdecode_syscallname.3
index 610cbc9b2115..8ba88fd3c43e 100644
--- a/lib/libsysdecode/sysdecode_syscallnames.3
+++ b/lib/libsysdecode/sysdecode_syscallname.3
@@ -23,17 +23,17 @@
.\" SUCH DAMAGE.
.\"
.Dd October 17, 2016
-.Dt sysdecode_syscallnames 3
+.Dt sysdecode_syscallname 3
.Os
.Sh NAME
-.Nm sysdecode_syscallnames
+.Nm sysdecode_syscallname
.Nd lookup name of system calls
.Sh LIBRARY
.Lb libsysdecode
.Sh SYNOPSIS
.In sysdecode.h
.Ft const char *
-.Fn sysdecode_syscallnames "enum sysdecode_abi abi" "unsigned int code"
+.Fn sysdecode_syscallname "enum sysdecode_abi abi" "unsigned int code"
.Sh DESCRIPTION
This function returns a pointer to the name of a system call identified by
.Fa code
diff --git a/lib/libtelnet/Makefile b/lib/libtelnet/Makefile
index 6bc2f5a51de0..2eeac2d44f98 100644
--- a/lib/libtelnet/Makefile
+++ b/lib/libtelnet/Makefile
@@ -1,6 +1,5 @@
.include <src.opts.mk>
-PACKAGE=lib${LIB}
TELNETDIR= ${SRCTOP}/contrib/telnet
.PATH: ${TELNETDIR}/libtelnet
diff --git a/lib/libutil++/Makefile b/lib/libutil++/Makefile
index 56b64bbf358c..2e7a614df800 100644
--- a/lib/libutil++/Makefile
+++ b/lib/libutil++/Makefile
@@ -11,6 +11,10 @@ MAN+= freebsd::FILE_up.3 \
freebsd::pidfile.3 \
freebsd::stringf.3
+.for page in ${MAN}
+MANSRC.${page}= ${page:S/:/_/g}
+.endfor
+
.include <src.opts.mk>
HAS_TESTS=
diff --git a/lib/libutil++/freebsd::FILE_up.3 b/lib/libutil++/freebsd__FILE_up.3
index ea63b1233b43..ea63b1233b43 100644
--- a/lib/libutil++/freebsd::FILE_up.3
+++ b/lib/libutil++/freebsd__FILE_up.3
diff --git a/lib/libutil++/freebsd::addrinfo_up.3 b/lib/libutil++/freebsd__addrinfo_up.3
index 4845a76bfb61..4845a76bfb61 100644
--- a/lib/libutil++/freebsd::addrinfo_up.3
+++ b/lib/libutil++/freebsd__addrinfo_up.3
diff --git a/lib/libutil++/freebsd::fd_up.3 b/lib/libutil++/freebsd__fd_up.3
index 2ef2241a5c40..2ef2241a5c40 100644
--- a/lib/libutil++/freebsd::fd_up.3
+++ b/lib/libutil++/freebsd__fd_up.3
diff --git a/lib/libutil++/freebsd::malloc_up.3 b/lib/libutil++/freebsd__malloc_up.3
index b18e7854213a..b18e7854213a 100644
--- a/lib/libutil++/freebsd::malloc_up.3
+++ b/lib/libutil++/freebsd__malloc_up.3
diff --git a/lib/libutil++/freebsd::nvlist_up.3 b/lib/libutil++/freebsd__nvlist_up.3
index 43f76cf3ead3..43f76cf3ead3 100644
--- a/lib/libutil++/freebsd::nvlist_up.3
+++ b/lib/libutil++/freebsd__nvlist_up.3
diff --git a/lib/libutil++/freebsd::pidfile.3 b/lib/libutil++/freebsd__pidfile.3
index fb67253f5c02..fb67253f5c02 100644
--- a/lib/libutil++/freebsd::pidfile.3
+++ b/lib/libutil++/freebsd__pidfile.3
diff --git a/lib/libutil++/freebsd::stringf.3 b/lib/libutil++/freebsd__stringf.3
index 341fedef4343..341fedef4343 100644
--- a/lib/libutil++/freebsd::stringf.3
+++ b/lib/libutil++/freebsd__stringf.3
diff --git a/lib/libutil/mntopts.c b/lib/libutil/mntopts.c
index 1d9347e3108a..07d3dd6d98a3 100644
--- a/lib/libutil/mntopts.c
+++ b/lib/libutil/mntopts.c
@@ -185,6 +185,7 @@ getmntpoint(const char *name)
strncpy(statfsp->f_mntfromname, device, len);
}
if (stat(ddevname, &mntdevstat) == 0 &&
+ S_ISCHR(mntdevstat.st_mode) &&
mntdevstat.st_rdev == devstat.st_rdev)
return (statfsp);
}