git: e8567de718a4 - main - nfscl: Fix handling of POSIX draft default ACLs

From: Rick Macklem <rmacklem_at_FreeBSD.org>
Date: Wed, 31 Dec 2025 02:44:43 UTC
The branch main has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=e8567de718a4a16edbf5490e1c36360563e16667

commit e8567de718a4a16edbf5490e1c36360563e16667
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2025-12-31 02:43:23 +0000
Commit:     Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2025-12-31 02:43:23 +0000

    nfscl: Fix handling of POSIX draft default ACLs
    
    A POSIX draft default ACL may not exist.  As such,
    an ACL with zero ACEs needs to be allowed.
    
    This patch fixes acquisition of POSIX draft default
    ACLs when they do not exist on the directory.
    
    Fixes:  a35bbd5d9f5f ("nfscommon: Add some support for POSIX draft ACLs")
---
 sys/fs/nfsclient/nfs_clvnops.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 7484a5a7e082..1bd77ab27ced 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -3779,7 +3779,8 @@ nfs_getacl(struct vop_getacl_args *ap)
 		return (EINVAL);
 	error = nfsrpc_getacl(ap->a_vp, ap->a_type, ap->a_cred, ap->a_td,
 	    ap->a_aclp);
-	if (error == 0 && ap->a_aclp->acl_cnt == 0)
+	if (error == 0 && ap->a_aclp->acl_cnt == 0 &&
+	    ap->a_type != ACL_TYPE_DEFAULT)
 		return (EOPNOTSUPP);
 	if (error > NFSERR_STALE) {
 		(void) nfscl_maperr(ap->a_td, error, (uid_t)0, (gid_t)0);