aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/Makefile127
-rw-r--r--kernel/h_segv.c17
-rw-r--r--kernel/kqueue/read/t_fifo.c6
-rw-r--r--kernel/kqueue/t_empty.c7
-rw-r--r--kernel/kqueue/t_sig.c6
-rw-r--r--kernel/t_memfd_create.c151
-rw-r--r--kernel/t_rnd.c8
-rw-r--r--kernel/t_umount.sh22
-rw-r--r--kernel/t_umountstress.sh10
9 files changed, 260 insertions, 94 deletions
diff --git a/kernel/Makefile b/kernel/Makefile
index 2fc5f1d714ac..5a6ae5035498 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.75 2023/08/03 12:24:46 nia Exp $
+# $NetBSD: Makefile,v 1.96 2025/07/17 19:50:40 kre Exp $
NOMAN= # defined
@@ -7,51 +7,80 @@ NOMAN= # defined
TESTSDIR= ${TESTSBASE}/kernel
TESTS_SUBDIRS+= kqueue
-#TESTS_C= t_epoll
+TESTS_C+= t_cloexec
+TESTS_C+= t_clofork
+#TESTS_C+= t_epoll
+TESTS_C+= t_execregs
TESTS_C+= t_fcntl
+.if ${MKRUMP} != "no"
+TESTS_C+= t_fdrestart
+.endif
+TESTS_C+= t_kauth_pr_47598
+TESTS_C+= t_ksem
TESTS_C+= t_lock
TESTS_C+= t_lockf
-TESTS_C+= t_pty
TESTS_C+= t_memfd_create
TESTS_C+= t_mqueue
+TESTS_C+= t_nanosleep
+TESTS_C+= t_open_pr_57260
TESTS_C+= t_proccwd
+TESTS_C+= t_pty
+TESTS_C+= t_semtimedop
+TESTS_C+= t_signal_and_sp
TESTS_C+= t_sysv
TESTS_C+= t_subr_prf
-TESTS_C+= t_kauth_pr_47598
-TESTS_C+= t_ksem
TESTS_C+= t_sysctl
TESTS_C+= t_timeleft
+.if ${MKRUMP} != "no"
+TESTS_C+= t_unmount
+.endif
TESTS_C+= t_zombie
-TESTS_C+= t_open_pr_57260
-TESTS_SH= t_umount
-TESTS_SH+= t_umountstress
-TESTS_SH+= t_ps_strings
-TESTS_SH+= t_trapsignal
+TESTS_SH= t_fexecve
+TESTS_SH+= t_fpufork
TESTS_SH+= t_interp
TESTS_SH+= t_magic_symlinks
TESTS_SH+= t_nointerpreter
TESTS_SH+= t_origin
TESTS_SH+= t_procpath
-TESTS_SH+= t_fexecve
-TESTS_SH+= t_fpufork
+TESTS_SH+= t_ps_strings
+.if ${MKKMOD} != "no"
+TESTS_SH+= t_setjmp
+.endif
.if ${MKRUMP} != "no"
TESTS_SH+= t_simplehook
.endif
+TESTS_SH+= t_trapsignal
+TESTS_SH+= t_umountstress
+TESTS_SH+= t_umount
BINDIR= ${TESTSDIR}
-PROGS= h_fexecve
+PROGS+= h_cloexec
+PROGS+= h_execregs
+PROGS+= h_execsp_dynamic
+PROGS+= h_execsp_static
+PROGS+= h_fexecve
+PROGS+= h_fpufork
+PROGS+= h_getprocpath
PROGS+= h_ps_strings1
PROGS+= h_ps_strings2
PROGS+= h_segv
-PROGS+= h_getprocpath
-PROGS+= h_fpufork
SCRIPTSDIR= ${TESTSDIR}
SCRIPTS= h_interpreter.sh
+LDADD.t_fdrestart+= -lpthread
+LDADD.t_fdrestart+= -lrumpnet_local
+LDADD.t_fdrestart+= -lrumpnet_net
+LDADD.t_fdrestart+= -lrumpnet_netinet
+LDADD.t_fdrestart+= -lrumpnet
+LDADD.t_fdrestart+= ${LIBRUMPBASE}
+
LDADD.t_mqueue+= -lrt
+LDADD.t_unmount+= -lrumpfs_tmpfs
+LDADD.t_unmount+= ${LIBRUMPBASE}
+
.if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
TESTS_SUBDIRS+= tty
@@ -68,6 +97,52 @@ LDADD.t_rnd+= -lrumpdev_rnd -lrumpdev ${LIBRUMPBASE}
LDADD.t_timeleft+= -lpthread
CPPFLAGS+= -D_KERNTYPES
+CPPFLAGS.t_unmount.c+= -D_KMEMUSER -D__EXPOSE_MOUNT
+
+.if exists(${.PARSEDIR}/arch/${MACHINE_ARCH})
+ARCHDIR:= ${.PARSEDIR}/arch/${MACHINE_ARCH}
+.else
+ARCHDIR:= ${.PARSEDIR}/arch/${MACHINE_CPU}
+.endif
+.PATH: ${ARCHDIR}
+
+.if exists(${ARCHDIR}/stack_pointer.h)
+CPPFLAGS.t_signal_and_sp.c+= -I${ARCHDIR} -DHAVE_STACK_POINTER_H
+.endif
+
+SRCS.t_signal_and_sp+= t_signal_and_sp.c
+.if exists(${ARCHDIR}/contextspfunc.S)
+CPPFLAGS.t_signal_and_sp.c+= -DHAVE_CONTEXTSPFUNC
+SRCS.t_signal_and_sp+= contextspfunc.S
+.endif
+.if exists(${ARCHDIR}/signalsphandler.S)
+CPPFLAGS.t_signal_and_sp.c+= -DHAVE_SIGNALSPHANDLER
+SRCS.t_signal_and_sp+= signalsphandler.S
+.endif
+.if exists(${ARCHDIR}/threadspfunc.S)
+CPPFLAGS.t_signal_and_sp.c+= -DHAVE_THREADSPFUNC
+SRCS.t_signal_and_sp+= threadspfunc.S
+LDADD.t_signal_and_sp+= -pthread
+.endif
+
+SRCS.h_execsp_dynamic+= h_execsp.c
+SRCS.h_execsp_static+= h_execsp.c
+.if exists(${ARCHDIR}/execsp.S)
+CPPFLAGS.t_signal_and_sp.c+= -DHAVE_EXECSP
+SRCS.h_execsp_dynamic+= execsp.S
+SRCS.h_execsp_static+= execsp.S
+LDFLAGS.h_execsp_dynamic+= -Wl,-e,execsp_start
+LDFLAGS.h_execsp_static+= -Wl,-e,execsp_start
+.else
+CPPFLAGS.h_execsp.c+= -Dexecsp_main=main
+.endif
+LDSTATIC.h_execsp_static= -static
+
+.if ${MACHINE_CPU} == "mips"
+CPPFLAGS.contextspfunc.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
+CPPFLAGS.execsp.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
+CPPFLAGS.signalsphandler.S+= -I${NETBSDSRCDIR}/lib/libc/arch/mips
+.endif
.PATH: ${NETBSDSRCDIR}/sys/kern
TESTS_C+= t_extent
@@ -75,6 +150,12 @@ SRCS.t_extent= t_extent.c subr_extent.c
CPPFLAGS.t_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
CPPFLAGS.subr_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
+TESTS_C+= t_time_arith
+SRCS.t_time_arith= t_time_arith.c subr_time_arith.c
+CPPFLAGS.t_time_arith.c+= -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
+CPPFLAGS.subr_time_arith.c+= -I${NETBSDSRCDIR}/sys -D_TIME_TESTING
+LDADD.t_time_arith+= -lutil
+
t_subr_prf.c: gen_t_subr_prf ${NETBSDSRCDIR}/sys/kern/subr_prf.c
${HOST_SH} ${.ALLSRC} ${.TARGET}
.if ${MKSANITIZER:Uno} == "yes"
@@ -99,4 +180,20 @@ CLEANFILES+= t_subr_prf.c
LDADD.h_segv+= -lm
+.if exists(arch/${MACHINE_ARCH}/execregs.h)
+CPPFLAGS.t_execregs.c+= -I${ARCHDIR}
+CPPFLAGS.t_execregs.c+= -I${.CURDIR}/../lib/libc/gen # isqemu.h
+CPPFLAGS.t_execregs.c+= -DHAVE_EXECREGS_TEST
+SRCS.t_execregs+= t_execregs.c
+SRCS.t_execregs+= execregs.c
+LDSTATIC.h_execregs= -static
+LDFLAGS.h_execregs+= -Wl,-e,execregs_start
+.else
+SRCS.h_execregs= h_execregs_unimpl.c
+.endif
+
+.if ${MKKMOD} != "no"
+SUBDIR+= setjmp_tester
+.endif
+
.include <bsd.test.mk>
diff --git a/kernel/h_segv.c b/kernel/h_segv.c
index 7a634da1df49..86ff492664f6 100644
--- a/kernel/h_segv.c
+++ b/kernel/h_segv.c
@@ -1,4 +1,4 @@
-/* $NetBSD: h_segv.c,v 1.14 2019/04/25 19:37:09 kamil Exp $ */
+/* $NetBSD: h_segv.c,v 1.15 2024/05/14 15:54:16 riastradh Exp $ */
/*-
* Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: h_segv.c,v 1.14 2019/04/25 19:37:09 kamil Exp $");
+__RCSID("$NetBSD: h_segv.c,v 1.15 2024/05/14 15:54:16 riastradh Exp $");
#define __TEST_FENV
@@ -121,10 +121,15 @@ check_fpe(void)
printf("FPU does not implement traps on FP exceptions\n");
exit(EXIT_FAILURE);
}
+#elif defined __riscv__
+ printf("RISC-V does not support floating-point exception traps\n");
+ exit(EXIT_FAILURE);
#endif
exit(EXIT_SUCCESS);
}
+volatile int ignore_result;
+
static void
trigger_fpe(void)
{
@@ -135,7 +140,13 @@ trigger_fpe(void)
feenableexcept(FE_ALL_EXCEPT);
#endif
- usleep((int)(a/b));
+ /*
+ * Try to trigger SIGFPE either by dividing by zero (which is
+ * defined to raise FE_DIVBYZERO, but may just return infinity
+ * without trapping the exception) or by converting infinity to
+ * integer.
+ */
+ ignore_result = (int)(a/b);
}
static void
diff --git a/kernel/kqueue/read/t_fifo.c b/kernel/kqueue/read/t_fifo.c
index 5dead2dd41ba..c9a2e32d5c0e 100644
--- a/kernel/kqueue/read/t_fifo.c
+++ b/kernel/kqueue/read/t_fifo.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fifo.c,v 1.5 2021/10/02 18:21:05 thorpej Exp $ */
+/* $NetBSD: t_fifo.c,v 1.6 2025/05/19 06:16:24 andvar Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include <sys/cdefs.h>
__COPYRIGHT("@(#) Copyright (c) 2021\
The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_fifo.c,v 1.5 2021/10/02 18:21:05 thorpej Exp $");
+__RCSID("$NetBSD: t_fifo.c,v 1.6 2025/05/19 06:16:24 andvar Exp $");
#include <sys/event.h>
#include <sys/stat.h>
@@ -121,7 +121,7 @@ ATF_TC_BODY(fifo, tc)
ATF_REQUIRE((event[0].flags & EV_EOF) != 0);
/*
- * Reconect the writer. We expect EV_EOF to be cleared and
+ * Reconnect the writer. We expect EV_EOF to be cleared and
* for the FIFO to no longer be readable once again.
*/
ATF_REQUIRE((wfd = open(fifo_path, O_WRONLY | O_NONBLOCK)) >= 0);
diff --git a/kernel/kqueue/t_empty.c b/kernel/kqueue/t_empty.c
index e733e917c528..32381baf7576 100644
--- a/kernel/kqueue/t_empty.c
+++ b/kernel/kqueue/t_empty.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_empty.c,v 1.1 2021/10/23 01:28:33 thorpej Exp $ */
+/* $NetBSD: t_empty.c,v 1.2 2024/08/23 07:13:50 rin Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_empty.c,v 1.1 2021/10/23 01:28:33 thorpej Exp $");
+__RCSID("$NetBSD: t_empty.c,v 1.2 2024/08/23 07:13:50 rin Exp $");
#include <sys/event.h>
#include <sys/socket.h>
@@ -163,6 +163,9 @@ ATF_TC_BODY(sock_tcp, tc)
ATF_REQUIRE_ERRNO(EINPROGRESS,
connect(writesock, (struct sockaddr *)&sin, sizeof(sin)) == -1);
+ /* XXX Avoid race between connect(2) and accept(2). */
+ sleep(1);
+
slen = sizeof(sin);
ATF_REQUIRE((readsock = accept(readsock, (struct sockaddr *)&sin,
&slen)) != -1);
diff --git a/kernel/kqueue/t_sig.c b/kernel/kqueue/t_sig.c
index 9d29cb8ed383..9981963419e8 100644
--- a/kernel/kqueue/t_sig.c
+++ b/kernel/kqueue/t_sig.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_sig.c,v 1.4 2021/10/10 18:11:31 thorpej Exp $ */
+/* $NetBSD: t_sig.c,v 1.5 2024/07/10 22:03:59 rillig Exp $ */
/*-
* Copyright (c) 2002, 2008, 2021 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include <sys/cdefs.h>
__COPYRIGHT("@(#) Copyright (c) 2008\
The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_sig.c,v 1.4 2021/10/10 18:11:31 thorpej Exp $");
+__RCSID("$NetBSD: t_sig.c,v 1.5 2024/07/10 22:03:59 rillig Exp $");
#include <sys/event.h>
#include <sys/ioctl.h>
@@ -199,7 +199,7 @@ ATF_TC_BODY(sig_and_proc, tc)
ATF_REQUIRE(kevent(kq, NULL, 0, events, 1, NULL) == 1);
ATF_REQUIRE(events[0].filter == EVFILT_PROC);
ATF_REQUIRE(events[0].ident == (uintptr_t)pid);
- ATF_REQUIRE(events[0].fflags = NOTE_EXIT);
+ ATF_REQUIRE(events[0].fflags == NOTE_EXIT);
}
ATF_TP_ADD_TCS(tp)
diff --git a/kernel/t_memfd_create.c b/kernel/t_memfd_create.c
index 7457bec3ec90..b65807108dfb 100644
--- a/kernel/t_memfd_create.c
+++ b/kernel/t_memfd_create.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_memfd_create.c,v 1.2 2023/07/29 16:24:35 rin Exp $ */
+/* $NetBSD: t_memfd_create.c,v 1.7 2025/04/19 01:56:50 riastradh Exp $ */
/*-
* Copyright (c) 2023 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_memfd_create.c,v 1.2 2023/07/29 16:24:35 rin Exp $");
+__RCSID("$NetBSD: t_memfd_create.c,v 1.7 2025/04/19 01:56:50 riastradh Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -43,8 +43,20 @@ __RCSID("$NetBSD: t_memfd_create.c,v 1.2 2023/07/29 16:24:35 rin Exp $");
#include "h_macros.h"
char name_buf[NAME_MAX];
-char write_buf[8192];
-char read_buf[8192];
+char *write_buf;
+char *read_buf;
+size_t rwbuf_size;
+
+static void
+setupbufs(void)
+{
+
+ rwbuf_size = (size_t)sysconf(_SC_PAGESIZE);
+ ATF_REQUIRE_MSG(rwbuf_size < SIZE_MAX/2, "rwbuf_size=%zu", rwbuf_size);
+ rwbuf_size *= 2;
+ REQUIRE_LIBC(write_buf = calloc(1, rwbuf_size), NULL);
+ REQUIRE_LIBC(read_buf = calloc(1, rwbuf_size), NULL);
+}
ATF_TC(create_null_name);
ATF_TC_HEAD(create_null_name, tc)
@@ -98,26 +110,27 @@ ATF_TC_BODY(read_write, tc)
int fd;
off_t offset;
+ setupbufs();
+
RL(fd = memfd_create("", 0));
- tests_makegarbage(write_buf, sizeof(write_buf));
- memset(read_buf, 0, sizeof(read_buf));
+ tests_makegarbage(write_buf, rwbuf_size);
- RL(write(fd, write_buf, sizeof(write_buf)));
+ RL(write(fd, write_buf, rwbuf_size));
offset = lseek(fd, 0, SEEK_CUR);
- ATF_REQUIRE_EQ_MSG(offset, sizeof(write_buf),
+ ATF_REQUIRE_EQ_MSG(offset, (off_t)rwbuf_size,
"File offset not set after write (%jd != %zu)", (intmax_t)offset,
- sizeof(write_buf));
+ rwbuf_size);
- RZ(lseek(fd, 0, SEEK_SET));
+ RL(lseek(fd, 0, SEEK_SET));
- RL(read(fd, read_buf, sizeof(read_buf)));
+ RL(read(fd, read_buf, rwbuf_size));
offset = lseek(fd, 0, SEEK_CUR);
- ATF_REQUIRE_EQ_MSG(offset, sizeof(read_buf),
+ ATF_REQUIRE_EQ_MSG(offset, (off_t)rwbuf_size,
"File offset not set after read (%jd != %zu)", (intmax_t)offset,
- sizeof(read_buf));
+ rwbuf_size);
- for (size_t i = 0; i < sizeof(read_buf); i++)
+ for (size_t i = 0; i < rwbuf_size; i++)
ATF_REQUIRE_EQ_MSG(read_buf[i], write_buf[i],
"Data read does not match data written");
}
@@ -134,37 +147,39 @@ ATF_TC_BODY(truncate, tc)
int fd;
struct stat st;
+ setupbufs();
+
RL(fd = memfd_create("", 0));
- tests_makegarbage(write_buf, sizeof(write_buf));
- tests_makegarbage(read_buf, sizeof(read_buf));
+ tests_makegarbage(write_buf, rwbuf_size);
+ tests_makegarbage(read_buf, rwbuf_size);
- RL(write(fd, write_buf, sizeof(write_buf)));
+ RL(write(fd, write_buf, rwbuf_size));
RL(fstat(fd, &st));
- ATF_REQUIRE_EQ_MSG(st.st_size, sizeof(write_buf),
- "Write did not grow size to %zu (is %jd)", sizeof(write_buf),
+ ATF_REQUIRE_EQ_MSG(st.st_size, (off_t)rwbuf_size,
+ "Write did not grow size to %zu (is %jd)", rwbuf_size,
(intmax_t)st.st_size);
- RL(ftruncate(fd, sizeof(write_buf)/2));
+ RL(ftruncate(fd, rwbuf_size/2));
RL(fstat(fd, &st));
- ATF_REQUIRE_EQ_MSG(st.st_size, sizeof(write_buf)/2,
+ ATF_REQUIRE_EQ_MSG(st.st_size, (off_t)rwbuf_size/2,
"Truncate did not shrink size to %zu (is %jd)",
- sizeof(write_buf)/2, (intmax_t)st.st_size);
+ rwbuf_size/2, (intmax_t)st.st_size);
- RL(ftruncate(fd, sizeof(read_buf)));
+ RL(ftruncate(fd, rwbuf_size));
RL(fstat(fd, &st));
- ATF_REQUIRE_EQ_MSG(st.st_size, sizeof(read_buf),
- "Truncate did not grow size to %zu (is %jd)", sizeof(read_buf),
+ ATF_REQUIRE_EQ_MSG(st.st_size, (off_t)rwbuf_size,
+ "Truncate did not grow size to %zu (is %jd)", rwbuf_size,
(intmax_t)st.st_size);
- RZ(lseek(fd, 0, SEEK_SET));
- RL(read(fd, read_buf, sizeof(read_buf)));
+ RL(lseek(fd, 0, SEEK_SET));
+ RL(read(fd, read_buf, rwbuf_size));
- for (size_t i = 0; i < sizeof(read_buf)/2; i++)
+ for (size_t i = 0; i < rwbuf_size/2; i++)
ATF_REQUIRE_EQ_MSG(read_buf[i], write_buf[i],
"Data read does not match data written");
- for (size_t i = sizeof(read_buf)/2; i < sizeof(read_buf); i++)
+ for (size_t i = rwbuf_size/2; i < rwbuf_size; i++)
ATF_REQUIRE_EQ_MSG(read_buf[i], 0,
"Data read on growed region is not zeroed");
}
@@ -180,12 +195,15 @@ ATF_TC_BODY(mmap, tc)
int fd;
void *addr;
+ setupbufs();
+
RL(fd = memfd_create("", 0));
- RL(ftruncate(fd, sizeof(read_buf)));
+ RL(ftruncate(fd, rwbuf_size));
- addr = mmap(NULL, sizeof(read_buf), PROT_READ|PROT_WRITE, MAP_SHARED,
- fd, 0);
- ATF_REQUIRE_MSG(addr != MAP_FAILED, "Mmap failed unexpectedly (%s)",
+ addr = mmap(NULL, rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ ATF_REQUIRE_MSG(addr != MAP_FAILED,
+ "mmap(NULL, %zu, 0x%x, 0x%x, %d, 0) failed: %s",
+ rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd,
strerror(errno));
}
@@ -240,6 +258,8 @@ test_all_seals_except(int fd, int except)
struct stat st;
void *addr;
+ ATF_REQUIRE(rwbuf_size > 0);
+
RL(fstat(fd, &st));
ATF_REQUIRE(st.st_size > 0);
@@ -255,8 +275,8 @@ test_all_seals_except(int fd, int except)
}
if (except & ~(F_SEAL_WRITE|F_SEAL_FUTURE_WRITE)) {
- RZ(lseek(fd, 0, SEEK_SET));
- rv = write(fd, write_buf, sizeof(write_buf));
+ RL(lseek(fd, 0, SEEK_SET));
+ rv = write(fd, write_buf, rwbuf_size);
if (rv == -1) {
ATF_REQUIRE_MSG(errno != EPERM,
"Seal %x prevented write", except);
@@ -265,10 +285,13 @@ test_all_seals_except(int fd, int except)
strerror(errno));
}
- addr = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, 0);
+ addr = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_SHARED,
+ fd, 0);
ATF_REQUIRE_MSG(addr != MAP_FAILED,
- "Mmap failed unexpectedly (%s)", strerror(errno));
+ "mmap(NULL, %llu, 0x%x, 0x%x, %d, 0) failed: %s",
+ (unsigned long long)st.st_size,
+ PROT_READ|PROT_WRITE, MAP_SHARED, fd,
+ strerror(errno));
}
if (except & ~F_SEAL_SHRINK) {
@@ -305,11 +328,13 @@ ATF_TC_BODY(seal_shrink, tc)
{
int fd;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(write_buf)));
+ RL(ftruncate(fd, rwbuf_size));
RL(fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK));
- ATF_REQUIRE_EQ_MSG(ftruncate(fd, sizeof(write_buf)/2), -1,
+ ATF_REQUIRE_EQ_MSG(ftruncate(fd, rwbuf_size/2), -1,
"Truncate succeeded unexpectedly");
ATF_REQUIRE_ERRNO(EPERM, true);
@@ -327,11 +352,13 @@ ATF_TC_BODY(seal_grow, tc)
{
int fd;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(write_buf)/2));
+ RL(ftruncate(fd, rwbuf_size/2));
RL(fcntl(fd, F_ADD_SEALS, F_SEAL_GROW));
- ATF_REQUIRE_EQ_MSG(ftruncate(fd, sizeof(write_buf)), -1,
+ ATF_REQUIRE_EQ_MSG(ftruncate(fd, rwbuf_size), -1,
"Truncate succeeded unexpectedly");
ATF_REQUIRE_ERRNO(EPERM, true);
@@ -349,11 +376,13 @@ ATF_TC_BODY(seal_write, tc)
{
int fd;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(write_buf)/2));
+ RL(ftruncate(fd, rwbuf_size/2));
RL(fcntl(fd, F_ADD_SEALS, F_SEAL_WRITE));
- ATF_REQUIRE_EQ_MSG(write(fd, write_buf, sizeof(write_buf)), -1,
+ ATF_REQUIRE_EQ_MSG(write(fd, write_buf, rwbuf_size), -1,
"Write succeeded unexpectedly");
ATF_REQUIRE_ERRNO(EPERM, true);
@@ -372,12 +401,15 @@ ATF_TC_BODY(seal_write_mmap, tc)
int fd;
void *addr;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(read_buf)));
+ RL(ftruncate(fd, rwbuf_size));
- addr = mmap(NULL, sizeof(read_buf), PROT_READ|PROT_WRITE, MAP_SHARED,
- fd, 0);
- ATF_REQUIRE_MSG(addr != MAP_FAILED, "Mmap failed unexpectedly (%s)",
+ addr = mmap(NULL, rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ ATF_REQUIRE_MSG(addr != MAP_FAILED,
+ "mmap(NULL, %zu, 0x%x, 0x%x, %d, 0) failed: %s",
+ rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd,
strerror(errno));
ATF_REQUIRE_EQ_MSG(fcntl(fd, F_ADD_SEALS, F_SEAL_WRITE), -1,
@@ -396,11 +428,13 @@ ATF_TC_BODY(seal_future_write, tc)
{
int fd;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(write_buf)/2));
+ RL(ftruncate(fd, rwbuf_size/2));
RL(fcntl(fd, F_ADD_SEALS, F_SEAL_FUTURE_WRITE));
- ATF_REQUIRE_EQ_MSG(write(fd, write_buf, sizeof(write_buf)), -1,
+ ATF_REQUIRE_EQ_MSG(write(fd, write_buf, rwbuf_size), -1,
"Write succeeded unexpectedly");
ATF_REQUIRE_ERRNO(EPERM, true);
@@ -420,17 +454,22 @@ ATF_TC_BODY(seal_future_write_mmap, tc)
int fd;
void *addr;
+ setupbufs();
+
RL(fd = memfd_create("", MFD_ALLOW_SEALING));
- RL(ftruncate(fd, sizeof(read_buf)));
- addr = mmap(NULL, sizeof(read_buf), PROT_READ|PROT_WRITE, MAP_SHARED,
- fd, 0);
- ATF_REQUIRE_MSG(addr != MAP_FAILED, "Mmap failed unexpectedly (%s)",
+ RL(ftruncate(fd, rwbuf_size));
+ addr = mmap(NULL, rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ ATF_REQUIRE_MSG(addr != MAP_FAILED,
+ "mmap(NULL, %zu, 0x%x, 0x%x, %d, 0) failed: %s",
+ rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd,
strerror(errno));
RL(fcntl(fd, F_ADD_SEALS, F_SEAL_FUTURE_WRITE));
- ATF_REQUIRE_EQ_MSG(mmap(NULL, sizeof(read_buf), PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, 0), MAP_FAILED, "Mmap succeeded unexpectedly");
+ ATF_REQUIRE_EQ_MSG(mmap(NULL, rwbuf_size, PROT_READ|PROT_WRITE,
+ MAP_SHARED, fd, 0), MAP_FAILED,
+ "mmap(NULL, %zu, 0x%x, 0x%x, %d, 0) succeeded unexpectedly",
+ rwbuf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd);
ATF_REQUIRE_ERRNO(EPERM, true);
}
diff --git a/kernel/t_rnd.c b/kernel/t_rnd.c
index afa21411947a..6fb458f1acb1 100644
--- a/kernel/t_rnd.c
+++ b/kernel/t_rnd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_rnd.c,v 1.11 2017/04/16 18:24:23 riastradh Exp $ */
+/* $NetBSD: t_rnd.c,v 1.13 2023/11/24 16:36:23 riastradh Exp $ */
/*
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_rnd.c,v 1.11 2017/04/16 18:24:23 riastradh Exp $");
+__RCSID("$NetBSD: t_rnd.c,v 1.13 2023/11/24 16:36:23 riastradh Exp $");
#include <sys/types.h>
#include <sys/fcntl.h>
@@ -81,7 +81,7 @@ ATF_TC_BODY(RNDADDDATA2, tc)
fd = rump_sys_open("/dev/random", O_RDWR, 0);
if (fd == -1)
atf_tc_fail_errno("cannot open /dev/random");
-
+
rd.entropy = 1;
rd.len = -1;
ATF_REQUIRE_ERRNO(EINVAL, rump_sys_ioctl(fd, RNDADDDATA, &rd) == -1);
@@ -106,7 +106,7 @@ ATF_TC_BODY(read_random, tc)
alarm(2);
RL(fd = rump_sys_open("/dev/random", RUMP_O_RDONLY));
RL(rump_sys_read(fd, buf, sizeof(buf)));
- RZ(rump_sys_close(fd));
+ RL(rump_sys_close(fd));
}
}
diff --git a/kernel/t_umount.sh b/kernel/t_umount.sh
index 4784b641718d..1dc46b93b2f3 100644
--- a/kernel/t_umount.sh
+++ b/kernel/t_umount.sh
@@ -1,4 +1,4 @@
-# $NetBSD: t_umount.sh,v 1.6 2022/05/24 20:50:20 andvar Exp $
+# $NetBSD: t_umount.sh,v 1.9 2025/08/18 14:59:51 christos Exp $
#
# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -41,6 +41,11 @@ umount_head()
}
umount_body()
{
+ if [ $(uname -p) = vax ]; then
+ atf_skip "port-vax/59287 vnd(4) can cause kernel crash"
+ fi
+
+ mydir=$(pwd)
cat >disktab <<EOF
floppy288|2.88MB 3.5in Extra High Density Floppy:\
:ty=floppy:se#512:nt#2:rm#300:ns#36:nc#80:\
@@ -49,6 +54,12 @@ floppy288|2.88MB 3.5in Extra High Density Floppy:\
:pc#5760:oc#0:
EOF
+ cat << EOF > dot
+cd: Can't cd to ".": No such file or directory
+EOF
+ cat << EOF > dotdot
+cd: Can't cd to "..": No such file or directory
+EOF
echo "*** Creating a dummy directory tree at" \
"${TMPMP} mounted on ${TMPIM}"
@@ -65,22 +76,19 @@ EOF
test -e "${TMPMP}/in_mounted_directory" || \
atf_fail "Test file not present in mounted directory!"
- mydir="`pwd`"
cd "${TMPMP}"
atf_check -o ignore -e ignore umount -f "${BVND}${MPART}"
atf_check -s ne:0 -e inline:"ls: .: No such file or directory\n" ls .
atf_check -s ne:0 -e inline:"ls: ..: No such file or directory\n" ls ..
- atf_check -s ne:0 -e ignore -o inline:"cd: can't cd to .\n" \
- -x "cd . 2>&1"
- atf_check -s ne:0 -e ignore -o inline:"cd: can't cd to ..\n" \
- -x "cd .. 2>&1"
+ atf_check -s ne:0 -e ignore -o file:"${mydir}/dot" -x "cd . 2>&1"
+ atf_check -s ne:0 -e ignore -o file:"${mydir}/dotdot" -x "cd .. 2>&1"
cd "${mydir}"
test -e "${TMPMP}/under_the_mount" || \
- atf_fail "Original mount point disapeared!"
+ atf_fail "Original mount point disappeared!"
}
umount_cleanup()
{
diff --git a/kernel/t_umountstress.sh b/kernel/t_umountstress.sh
index fd50a1daca30..737334e588aa 100644
--- a/kernel/t_umountstress.sh
+++ b/kernel/t_umountstress.sh
@@ -1,4 +1,4 @@
-# $NetBSD: t_umountstress.sh,v 1.5 2013/05/31 14:40:48 gson Exp $
+# $NetBSD: t_umountstress.sh,v 1.6 2025/04/19 02:07:43 rin Exp $
#
# Copyright (c) 2013 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -41,6 +41,10 @@ fileop_head()
}
fileop_body()
{
+ if [ $(uname -p) = vax ]; then
+ atf_skip "port-vax/59287 vnd(4) can cause kernel crash"
+ fi
+
cat >disktab <<EOF
floppy288|2.88MB 3.5in Extra High Density Floppy:\
:ty=floppy:se#512:nt#2:rm#300:ns#36:nc#80:\
@@ -126,6 +130,10 @@ mountlist_head()
}
mountlist_body()
{
+ if [ $(uname -p) = vax ]; then
+ atf_skip "port-vax/59287 vnd(4) can cause kernel crash"
+ fi
+
cat >disktab <<EOF
floppy288|2.88MB 3.5in Extra High Density Floppy:\
:ty=floppy:se#512:nt#2:rm#300:ns#36:nc#80:\