The t_mount:large testcase intentionally passes in values which are assumed to overflow. These tests pass on FreeBSD. (Simplified repro) Run the following commands as root: mkdir tmp mount -t tmpfs -o size=9223372036854775808 tmpfs tmp mount -t tmpfs -o size=9223372036854775808g tmpfs tmp rmdir tmp Expected results: The above mount commands should fail with a non-zero exit code. Actual results: The commands pass: # mount -t tmpfs -o size=9223372036854775808g tmpfs tmp # echo $? 0 # mount -t tmpfs -o size=9223372036854775808 tmpfs tmp # echo $? 0 #
Taking the bug for now to do some triage. There's some bounds checking implemented in tmpfs_subr.c which suggests that the limits/values used by the NetBSD tests might be incorrect on FreeBSD with amd64. TODO: test on i386.
A commit references this bug: Author: ngie Date: Thu Oct 13 08:27:20 UTC 2016 New revision: 307204 URL: https://svnweb.freebsd.org/changeset/base/307204 Log: Expect :large to fail on FreeBSD FreeBSD doesn't appear to validate large -o size values like NetBSD does MFC after: 2 weeks PR: 212862 Sponsored by: Dell EMC Isilon Changes: head/contrib/netbsd-tests/fs/tmpfs/t_mount.sh
A commit references this bug: Author: ngie Date: Wed Dec 7 06:57:09 UTC 2016 New revision: 309668 URL: https://svnweb.freebsd.org/changeset/base/309668 Log: MFC r306030,r306031,r306033,r306036,r306038,r307190,r307196,r307204,r307205,r307701,r307702: r306030: Port vnode_leak_test:main to FreeBSD Use a simpler way of dumping kern.maxvnodes, i.e. `sysctl -n kern.maxvnodes` The awk filtering method employed in NetBSD doesn't work on FreeBSD r306031: Port contrib/netbsd-tests/fs/h_funcs.subr to FreeBSD Use kldstat -m to determine whether or not a filesystem is loaded. This works well with tmpfs, ufs, and zfs r306033: Port sizes_test and statvfs_test to FreeBSD Similar to r306030, use a simpler method for getting the value of `hw.pagesize`, i.e. `sysctl -n hw.pagesize`. The awk filtering method doesn't work on FreeBSD r306036: Port to mknod_test and readdir_test to FreeBSD The `mknod <file> p` command doesn't exist on FreeBSD, like on NetBSD. Use mkfifo instead to create named pipes (FIFOs). r306038: Port vnd_test to FreeBSD Use mdmfs/mdconfig instead of vndconfig/newfs. vndconfig doesn't exist on FreeBSD. TODO: need to parameterize out the md(4) device as it's currently hardcoded to "3" (in both the FreeBSD and NetBSD cases). r307190: Skip :uchg on FreeBSD Unfortunately removing files with uchg set always succeeds with root on FreeBSD. Unfortunately running the test as an unprivileged user isn't doable because mounting tmpfs requires root PR: 212861 r307196: Port contrib/netbsd-tests/fs/tmpfs/h_tools.c to FreeBSD - Add inttypes.h #include for PRId64 macro - Use FreeBSD's copy of getfh(2), which doesn't include a `fh_size` parameter. Use sizeof(fhandle_t) instead as the size of fhp is always fixed as fhandle_t, unlike NetBSD's copy of fhp, which is void*. r307204: Expect :large to fail on FreeBSD FreeBSD doesn't appear to validate large -o size values like NetBSD does PR: 212862 r307205: Change atf_skip call to atf_expect_fail to make it clear that a failure is expected PR: 212861 Suggested by: jmmv r307701: Expect tests/sys/fs/tmpfs/link_test:kqueue to fail It fails with: "dir/b did not receive NOTE_LINK" Also, add needed cleanup logic to cleanup the mountpoint after the fact PR: 213662 r307702: Integrate contrib/netbsd-tests/fs/tmpfs into the FreeBSD test suite as tests/sys/fs These testcases exercise tmpfs support Changes: _U stable/11/ stable/11/contrib/netbsd-tests/fs/h_funcs.subr stable/11/contrib/netbsd-tests/fs/tmpfs/h_tools.c stable/11/contrib/netbsd-tests/fs/tmpfs/t_link.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_mknod.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_mount.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_readdir.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_remove.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_sizes.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_statvfs.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh stable/11/contrib/netbsd-tests/fs/tmpfs/t_vnode_leak.sh stable/11/etc/mtree/BSD.tests.dist stable/11/tests/sys/Makefile stable/11/tests/sys/fs/
A commit references this bug: Author: ngie Date: Fri Feb 10 02:51:54 UTC 2017 New revision: 313514 URL: https://svnweb.freebsd.org/changeset/base/313514 Log: MFC r307190,r307196,r307204,r307205: r307190: Skip :uchg on FreeBSD Unfortunately removing files with uchg set always succeeds with root on FreeBSD. Unfortunately running the test as an unprivileged user isn't doable because mounting tmpfs requires root PR: 212861 r307196: Port contrib/netbsd-tests/fs/tmpfs/h_tools.c to FreeBSD - Add inttypes.h #include for PRId64 macro - Use FreeBSD's copy of getfh(2), which doesn't include a `fh_size` parameter. Use sizeof(fhandle_t) instead as the size of fhp is always fixed as fhandle_t, unlike NetBSD's copy of fhp, which is void*. r307204: Expect :large to fail on FreeBSD FreeBSD doesn't appear to validate large -o size values like NetBSD does PR: 212862 r307205: Change atf_skip call to atf_expect_fail to make it clear that a failure is expected PR: 212861 Suggested by: jmmv Changes: _U stable/10/ stable/10/contrib/netbsd-tests/fs/tmpfs/h_tools.c stable/10/contrib/netbsd-tests/fs/tmpfs/t_mount.sh stable/10/contrib/netbsd-tests/fs/tmpfs/t_remove.sh
For the following conditions Product: Base System, Documentation Status: New, Open, In Progress, UNCONFIRMED Assignee: Former FreeBSD committer Reset to default assignee. Reset status to "Open".
Are we missing a check that exists in NetBSD, or did we make an explicit choice to allow these values?
CC kib for a comment on comment #6 - should we add a limit on tmpfs -o size?
(In reply to Ed Maste from comment #7) If user wants to set a specific limit, why disallow it ?
(In reply to Konstantin Belousov from comment #8) It isn't that we should not honour a limit set by the user, but rather that a limit of 9223372036854775808 (2^63) overflows the off_t tm_size_max.