Bug 212862 - contrib/netbsd-tests/fs/tmpfs/t_mount:large fails on FreeBSD
Summary: contrib/netbsd-tests/fs/tmpfs/t_mount:large fails on FreeBSD
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: tests (show other bugs)
Version: CURRENT
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-testing (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-09-20 18:20 UTC by Enji Cooper
Modified: 2019-12-18 15:21 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Enji Cooper freebsd_committer freebsd_triage 2016-09-20 18:20:45 UTC
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
#
Comment 1 Enji Cooper freebsd_committer freebsd_triage 2016-09-20 18:22:01 UTC
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.
Comment 2 commit-hook freebsd_committer freebsd_triage 2016-10-13 08:27:52 UTC
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
Comment 3 commit-hook freebsd_committer freebsd_triage 2016-12-07 06:57:52 UTC
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/
Comment 4 commit-hook freebsd_committer freebsd_triage 2017-02-10 02:52:58 UTC
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
Comment 5 Eitan Adler freebsd_committer freebsd_triage 2018-01-08 04:14:34 UTC
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".
Comment 6 Ed Maste freebsd_committer freebsd_triage 2018-03-09 17:55:51 UTC
Are we missing a check that exists in NetBSD, or did we make an explicit choice to allow these values?
Comment 7 Ed Maste freebsd_committer freebsd_triage 2019-07-31 13:24:54 UTC
CC kib for a comment on comment #6 - should we add a limit on tmpfs -o size?
Comment 8 Konstantin Belousov freebsd_committer freebsd_triage 2019-07-31 23:32:47 UTC
(In reply to Ed Maste from comment #7)
If user wants to set a specific limit, why disallow it ?
Comment 9 Ed Maste freebsd_committer freebsd_triage 2019-12-18 15:21:57 UTC
(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.