Author: sjg
Date: Mon Mar 11 20:40:56 2019
New Revision: 345024
URL: https://svnweb.freebsd.org/changeset/base/345024

Log:
  Add _PC_ACL_* to vop_stdpathconf
  
  This avoid EINVAL from tmpfs etc.
  
  Reviewed by:  kib
  Differential Revision:        https://reviews.freebsd.org/D19512

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
  head/sys/fs/nandfs/nandfs_vnops.c
  head/sys/fs/nfsclient/nfs_clvnops.c
  head/sys/kern/vfs_default.c
  head/sys/ufs/ufs/ufs_vnops.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c    Mon Mar 
11 19:50:44 2019        (r345023)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c    Mon Mar 
11 20:40:56 2019        (r345024)
@@ -755,10 +755,6 @@ zfsctl_common_pathconf(ap)
                *ap->a_retval = (int)SPA_MINBLOCKSIZE;
                return (0);
 
-       case _PC_ACL_EXTENDED:
-               *ap->a_retval = 0;
-               return (0);
-
        case _PC_ACL_NFS4:
                *ap->a_retval = 1;
                return (0);

Modified: head/sys/fs/nandfs/nandfs_vnops.c
==============================================================================
--- head/sys/fs/nandfs/nandfs_vnops.c   Mon Mar 11 19:50:44 2019        
(r345023)
+++ head/sys/fs/nandfs/nandfs_vnops.c   Mon Mar 11 20:40:56 2019        
(r345024)
@@ -2258,9 +2258,6 @@ nandfs_pathconf(struct vop_pathconf_args *ap)
        case _PC_NO_TRUNC:
                *ap->a_retval = 1;
                break;
-       case _PC_ACL_EXTENDED:
-               *ap->a_retval = 0;
-               break;
        case _PC_ALLOC_SIZE_MIN:
                *ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_bsize;
                break;

Modified: head/sys/fs/nfsclient/nfs_clvnops.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clvnops.c Mon Mar 11 19:50:44 2019        
(r345023)
+++ head/sys/fs/nfsclient/nfs_clvnops.c Mon Mar 11 20:40:56 2019        
(r345024)
@@ -3511,9 +3511,6 @@ nfs_pathconf(struct vop_pathconf_args *ap)
        case _PC_NO_TRUNC:
                *ap->a_retval = pc.pc_notrunc;
                break;
-       case _PC_ACL_EXTENDED:
-               *ap->a_retval = 0;
-               break;
        case _PC_ACL_NFS4:
                if (NFS_ISV4(vp) && nfsrv_useacl != 0 && attrflag != 0 &&
                    NFSISSET_ATTRBIT(&nfsva.na_suppattr, NFSATTRBIT_ACL))
@@ -3526,9 +3523,6 @@ nfs_pathconf(struct vop_pathconf_args *ap)
                        *ap->a_retval = ACL_MAX_ENTRIES;
                else
                        *ap->a_retval = 3;
-               break;
-       case _PC_MAC_PRESENT:
-               *ap->a_retval = 0;
                break;
        case _PC_PRIO_IO:
                *ap->a_retval = 0;

Modified: head/sys/kern/vfs_default.c
==============================================================================
--- head/sys/kern/vfs_default.c Mon Mar 11 19:50:44 2019        (r345023)
+++ head/sys/kern/vfs_default.c Mon Mar 11 20:40:56 2019        (r345024)
@@ -482,6 +482,13 @@ vop_stdpathconf(ap)
                case _PC_PATH_MAX:
                        *ap->a_retval = PATH_MAX;
                        return (0);
+               case _PC_ACL_EXTENDED:
+               case _PC_ACL_NFS4:
+               case _PC_CAP_PRESENT:
+               case _PC_INF_PRESENT:
+               case _PC_MAC_PRESENT:
+                       *ap->a_retval = 0;
+                       return (0);
                default:
                        return (EINVAL);
        }

Modified: head/sys/ufs/ufs/ufs_vnops.c
==============================================================================
--- head/sys/ufs/ufs/ufs_vnops.c        Mon Mar 11 19:50:44 2019        
(r345023)
+++ head/sys/ufs/ufs/ufs_vnops.c        Mon Mar 11 20:40:56 2019        
(r345024)
@@ -2421,28 +2421,20 @@ ufs_pathconf(ap)
        case _PC_NO_TRUNC:
                *ap->a_retval = 1;
                break;
-       case _PC_ACL_EXTENDED:
 #ifdef UFS_ACL
+       case _PC_ACL_EXTENDED:
                if (ap->a_vp->v_mount->mnt_flag & MNT_ACLS)
                        *ap->a_retval = 1;
                else
                        *ap->a_retval = 0;
-#else
-               *ap->a_retval = 0;
-#endif
                break;
-
        case _PC_ACL_NFS4:
-#ifdef UFS_ACL
                if (ap->a_vp->v_mount->mnt_flag & MNT_NFS4ACLS)
                        *ap->a_retval = 1;
                else
                        *ap->a_retval = 0;
-#else
-               *ap->a_retval = 0;
-#endif
                break;
-
+#endif
        case _PC_ACL_PATH_MAX:
 #ifdef UFS_ACL
                if (ap->a_vp->v_mount->mnt_flag & (MNT_ACLS | MNT_NFS4ACLS))
@@ -2453,16 +2445,14 @@ ufs_pathconf(ap)
                *ap->a_retval = 3;
 #endif
                break;
-       case _PC_MAC_PRESENT:
 #ifdef MAC
+       case _PC_MAC_PRESENT:
                if (ap->a_vp->v_mount->mnt_flag & MNT_MULTILABEL)
                        *ap->a_retval = 1;
                else
                        *ap->a_retval = 0;
-#else
-               *ap->a_retval = 0;
-#endif
                break;
+#endif
        case _PC_MIN_HOLE_SIZE:
                *ap->a_retval = ap->a_vp->v_mount->mnt_stat.f_iosize;
                break;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to