From owner-svn-src-all@FreeBSD.ORG Tue Mar 22 17:44:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D4E3106564A; Tue, 22 Mar 2011 17:44:08 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3F04D8FC13; Tue, 22 Mar 2011 17:44:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p2MHi8ua066788; Tue, 22 Mar 2011 17:44:08 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p2MHi8u6066784; Tue, 22 Mar 2011 17:44:08 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201103221744.p2MHi8u6066784@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 22 Mar 2011 17:44:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219878 - in head: lib/libc/posix1e sys/kern sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Mar 2011 17:44:08 -0000 Author: trasz Date: Tue Mar 22 17:44:07 2011 New Revision: 219878 URL: http://svn.freebsd.org/changeset/base/219878 Log: Move the code around so that libc behaviour does not depend on a variable that was supposed to be kernel-only. There should be no functional changes. Modified: head/lib/libc/posix1e/acl_strip.c head/sys/kern/subr_acl_nfs4.c head/sys/sys/acl.h Modified: head/lib/libc/posix1e/acl_strip.c ============================================================================== --- head/lib/libc/posix1e/acl_strip.c Tue Mar 22 17:26:56 2011 (r219877) +++ head/lib/libc/posix1e/acl_strip.c Tue Mar 22 17:44:07 2011 (r219878) @@ -36,13 +36,12 @@ __FBSDID("$FreeBSD$"); #include "acl_support.h" /* - * These three routines from sys/kern/subr_acl_nfs4.c are used by both kernel + * These routines from sys/kern/subr_acl_nfs4.c are used by both kernel * and libc. */ -void acl_nfs4_trivial_from_mode(struct acl *aclp, mode_t mode); -void acl_nfs4_sync_acl_from_mode(struct acl *aclp, mode_t mode, - int file_owner_id); void acl_nfs4_sync_mode_from_acl(mode_t *_mode, const struct acl *aclp); +void acl_nfs4_trivial_from_mode_libc(struct acl *aclp, int file_owner_id, + int canonical_six); static acl_t _nfs4_acl_strip_np(const acl_t aclp, int canonical_six) @@ -59,10 +58,7 @@ _nfs4_acl_strip_np(const acl_t aclp, int _acl_brand_as(newacl, ACL_BRAND_NFS4); acl_nfs4_sync_mode_from_acl(&mode, &(aclp->ats_acl)); - if (canonical_six) - acl_nfs4_sync_acl_from_mode(&(newacl->ats_acl), mode, -1); - else - acl_nfs4_trivial_from_mode(&(newacl->ats_acl), mode); + acl_nfs4_trivial_from_mode_libc(&(newacl->ats_acl), mode, canonical_six); return (newacl); } Modified: head/sys/kern/subr_acl_nfs4.c ============================================================================== --- head/sys/kern/subr_acl_nfs4.c Tue Mar 22 17:26:56 2011 (r219877) +++ head/sys/kern/subr_acl_nfs4.c Tue Mar 22 17:44:07 2011 (r219878) @@ -51,14 +51,14 @@ __FBSDID("$FreeBSD$"); #define KASSERT(a, b) assert(a) #define CTASSERT(a) -void acl_nfs4_trivial_from_mode(struct acl *aclp, mode_t mode); - #endif /* !_KERNEL */ -static int acl_nfs4_old_semantics = 1; - #ifdef _KERNEL +static void acl_nfs4_trivial_from_mode(struct acl *aclp, mode_t mode); + +static int acl_nfs4_old_semantics = 1; + SYSCTL_INT(_vfs, OID_AUTO, acl_nfs4_old_semantics, CTLFLAG_RW, &acl_nfs4_old_semantics, 1, "Use pre-PSARC/2010/029 NFSv4 ACL semantics"); @@ -703,6 +703,7 @@ acl_nfs4_sync_acl_from_mode_draft(struct a5->ae_perm |= ACL_EXECUTE; } +#ifdef _KERNEL void acl_nfs4_sync_acl_from_mode(struct acl *aclp, mode_t mode, int file_owner_id) @@ -713,6 +714,7 @@ acl_nfs4_sync_acl_from_mode(struct acl * else acl_nfs4_trivial_from_mode(aclp, mode); } +#endif /* _KERNEL */ void acl_nfs4_sync_mode_from_acl(mode_t *_mode, const struct acl *aclp) @@ -837,6 +839,7 @@ acl_nfs4_sync_mode_from_acl(mode_t *_mod *_mode = mode | (old_mode & ACL_PRESERVE_MASK); } +#ifdef _KERNEL /* * Calculate inherited ACL in a manner compatible with NFSv4 Minor Version 1, * draft-ietf-nfsv4-minorversion1-03.txt. @@ -1000,6 +1003,7 @@ acl_nfs4_compute_inherited_acl_draft(con */ acl_nfs4_sync_acl_from_mode(child_aclp, mode, file_owner_id); } +#endif /* _KERNEL */ /* * Populate the ACL with entries inherited from parent_aclp. @@ -1182,6 +1186,7 @@ acl_nfs4_compute_inherited_acl_psarc(con _acl_append(aclp, ACL_EVERYONE, everyone_allow, ACL_ENTRY_TYPE_ALLOW); } +#ifdef _KERNEL void acl_nfs4_compute_inherited_acl(const struct acl *parent_aclp, struct acl *child_aclp, mode_t mode, int file_owner_id, @@ -1195,17 +1200,15 @@ acl_nfs4_compute_inherited_acl(const str acl_nfs4_compute_inherited_acl_psarc(parent_aclp, child_aclp, mode, file_owner_id, is_directory); } +#endif /* _KERNEL */ /* * Calculate trivial ACL in a manner compatible with PSARC/2010/029. * Note that this results in an ACL different from (but semantically * equal to) the "canonical six" trivial ACL computed using algorithm * described in draft-ietf-nfsv4-minorversion1-03.txt, 3.16.6.2. - * - * This routine is not static only because the code is being used in libc. - * Kernel code should call acl_nfs4_sync_acl_from_mode() instead. */ -void +static void acl_nfs4_trivial_from_mode(struct acl *aclp, mode_t mode) { @@ -1213,6 +1216,23 @@ acl_nfs4_trivial_from_mode(struct acl *a acl_nfs4_compute_inherited_acl_psarc(NULL, aclp, mode, -1, -1); } +#ifndef _KERNEL +/* + * This routine is used by libc to implement acl_strip_np(3) + * and acl_is_trivial_np(3). + */ +void +acl_nfs4_trivial_from_mode_libc(struct acl *aclp, int mode, int canonical_six) +{ + + aclp->acl_cnt = 0; + if (canonical_six) + acl_nfs4_sync_acl_from_mode_draft(aclp, mode, -1); + else + acl_nfs4_trivial_from_mode(aclp, mode); +} +#endif /* !_KERNEL */ + #ifdef _KERNEL static int _acls_are_equal(const struct acl *a, const struct acl *b) Modified: head/sys/sys/acl.h ============================================================================== --- head/sys/sys/acl.h Tue Mar 22 17:26:56 2011 (r219877) +++ head/sys/sys/acl.h Tue Mar 22 17:44:07 2011 (r219878) @@ -285,8 +285,6 @@ mode_t acl_posix1e_newfilemode(mode_t struct acl *acl_alloc(int flags); void acl_free(struct acl *aclp); -void acl_nfs4_trivial_from_mode(struct acl *aclp, - mode_t mode); void acl_nfs4_sync_acl_from_mode(struct acl *aclp, mode_t mode, int file_owner_id); void acl_nfs4_sync_mode_from_acl(mode_t *mode,