diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/Makefile | 127 | ||||
| -rw-r--r-- | kernel/h_segv.c | 17 | ||||
| -rw-r--r-- | kernel/kqueue/read/t_fifo.c | 6 | ||||
| -rw-r--r-- | kernel/kqueue/t_empty.c | 7 | ||||
| -rw-r--r-- | kernel/kqueue/t_sig.c | 6 | ||||
| -rw-r--r-- | kernel/t_memfd_create.c | 151 | ||||
| -rw-r--r-- | kernel/t_rnd.c | 8 | ||||
| -rw-r--r-- | kernel/t_umount.sh | 22 | ||||
| -rw-r--r-- | kernel/t_umountstress.sh | 10 |
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:\ |
