Deleted Added
full compact
34c34
< * $FreeBSD: head/sys/fs/devfs/devfs_vfsops.c 231267 2012-02-09 10:22:08Z mm $
---
> * $FreeBSD: head/sys/fs/devfs/devfs_vfsops.c 232059 2012-02-23 18:51:24Z mm $
74c74
< int rsnum;
---
> int injail, rsnum;
83a84,86
> if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_DEVFS))
> return (EPERM);
>
84a88
> injail = jailed(td->td_ucred);
92,94c96,100
< &rsnum) != 1 || rsnum < 0 || rsnum > 65535))
< error = EINVAL;
< }
---
> &rsnum) != 1 || rsnum < 0 || rsnum > 65535)) {
> vfs_mount_error(mp, "%s",
> "invalid ruleset specification");
> return (EINVAL);
> }
96,99c102,103
< /* jails enforce their ruleset, prison0 has no restrictions */
< if (td->td_ucred->cr_prison->pr_devfs_rsnum != 0) {
< rsnum = td->td_ucred->cr_prison->pr_devfs_rsnum;
< if (rsnum == -1)
---
> if (injail && rsnum != 0 &&
> rsnum != td->td_ucred->cr_prison->pr_devfs_rsnum)
101,103d104
< /* check rsnum for sanity, devfs_rsnum is uint16_t */
< if (rsnum < 0 || rsnum > 65535)
< error = EINVAL;
106,109c107,109
< if (error) {
< vfs_mount_error(mp, "%s", "invalid ruleset specification");
< return (error);
< }
---
> /* jails enforce their ruleset */
> if (injail)
> rsnum = td->td_ucred->cr_prison->pr_devfs_rsnum;