All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <brauner@kernel.org>
To: linux-fsdevel@vger.kernel.org
Cc: Seth Forshee <sforshee@kernel.org>,
	Christoph Hellwig <hch@lst.de>, Al Viro <viro@zeniv.linux.org.uk>,
	Steve French <sfrench@samba.org>, Paulo Alcantara <pc@cjr.nz>,
	Ronnie Sahlberg <lsahlber@redhat.com>,
	Shyam Prasad N <sprasad@microsoft.com>,
	Hyunchul Lee <hyc.lee@gmail.com>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	linux-cifs@vger.kernel.org,
	linux-security-module@vger.kernel.org
Subject: Re: [PATCH v3 27/29] cifs: use stub posix acl handlers
Date: Thu, 29 Sep 2022 09:56:10 +0200	[thread overview]
Message-ID: <20220929075610.jp2kcthlsu7zs5dr@wittgenstein> (raw)
In-Reply-To: <20220928160843.382601-28-brauner@kernel.org>

On Wed, Sep 28, 2022 at 06:08:41PM +0200, Christian Brauner wrote:
> Now that cifs supports the get and set acl inode operations and the vfs
> has been switched to the new posi api, cifs can simply rely on the stub
> posix acl handlers. The custom xattr handlers and associated unused
> helpers can be removed.
> 
> Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
> ---
> 
> Notes:
>     /* v2 */
>     unchanged
>     
>     /* v3 */
>     unchanged
> 
>  fs/cifs/cifsproto.h |   8 --
>  fs/cifs/cifssmb.c   | 298 --------------------------------------------
>  fs/cifs/xattr.c     |  68 +---------
>  3 files changed, 4 insertions(+), 370 deletions(-)
> 
> diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
> index 279e867dee2e..9259da1b885d 100644
> --- a/fs/cifs/cifsproto.h
> +++ b/fs/cifs/cifsproto.h
> @@ -542,18 +542,10 @@ extern int CIFSSMBGetCIFSACL(const unsigned int xid, struct cifs_tcon *tcon,
>  			__u16 fid, struct cifs_ntsd **acl_inf, __u32 *buflen);
>  extern int CIFSSMBSetCIFSACL(const unsigned int, struct cifs_tcon *, __u16,
>  			struct cifs_ntsd *, __u32, int);
> -extern int CIFSSMBGetPosixACL(const unsigned int xid, struct cifs_tcon *tcon,
> -		const unsigned char *searchName,
> -		char *acl_inf, const int buflen, const int acl_type,
> -		const struct nls_table *nls_codepage, int remap_special_chars);
>  extern int cifs_do_get_acl(const unsigned int xid, struct cifs_tcon *tcon,
>  			   const unsigned char *searchName,
>  			   struct posix_acl **acl, const int acl_type,
>  			   const struct nls_table *nls_codepage, int remap);
> -extern int CIFSSMBSetPosixACL(const unsigned int xid, struct cifs_tcon *tcon,
> -		const unsigned char *fileName,
> -		const char *local_acl, const int buflen, const int acl_type,
> -		const struct nls_table *nls_codepage, int remap_special_chars);
>  extern int cifs_do_set_acl(const unsigned int xid, struct cifs_tcon *tcon,
>  			   const unsigned char *fileName,
>  			   const struct posix_acl *acl, const int acl_type,
> diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
> index 7b47d0def5d2..ddef789a6fcb 100644
> --- a/fs/cifs/cifssmb.c
> +++ b/fs/cifs/cifssmb.c
> @@ -2914,304 +2914,6 @@ CIFSSMB_set_compression(const unsigned int xid, struct cifs_tcon *tcon,
>  
>  #ifdef CONFIG_CIFS_POSIX
>  
> -/*Convert an Access Control Entry from wire format to local POSIX xattr format*/
> -static void cifs_convert_ace(struct posix_acl_xattr_entry *ace,
> -			     struct cifs_posix_ace *cifs_ace)
> -{
> -	/* u8 cifs fields do not need le conversion */
> -	ace->e_perm = cpu_to_le16(cifs_ace->cifs_e_perm);
> -	ace->e_tag  = cpu_to_le16(cifs_ace->cifs_e_tag);
> -	ace->e_id   = cpu_to_le32(le64_to_cpu(cifs_ace->cifs_uid));
> -/*
> -	cifs_dbg(FYI, "perm %d tag %d id %d\n",
> -		 ace->e_perm, ace->e_tag, ace->e_id);
> -*/
> -
> -	return;
> -}
> -
> -/* Convert ACL from CIFS POSIX wire format to local Linux POSIX ACL xattr */
> -static int cifs_copy_posix_acl(char *trgt, char *src, const int buflen,
> -			       const int acl_type, const int size_of_data_area)
> -{
> -	int size =  0;
> -	int i;
> -	__u16 count;
> -	struct cifs_posix_ace *pACE;
> -	struct cifs_posix_acl *cifs_acl = (struct cifs_posix_acl *)src;
> -	struct posix_acl_xattr_header *local_acl = (void *)trgt;
> -
> -	if (le16_to_cpu(cifs_acl->version) != CIFS_ACL_VERSION)
> -		return -EOPNOTSUPP;
> -
> -	if (acl_type == ACL_TYPE_ACCESS) {
> -		count = le16_to_cpu(cifs_acl->access_entry_count);
> -		pACE = &cifs_acl->ace_array[0];
> -		size = sizeof(struct cifs_posix_acl);
> -		size += sizeof(struct cifs_posix_ace) * count;
> -		/* check if we would go beyond end of SMB */
> -		if (size_of_data_area < size) {
> -			cifs_dbg(FYI, "bad CIFS POSIX ACL size %d vs. %d\n",
> -				 size_of_data_area, size);
> -			return -EINVAL;
> -		}
> -	} else if (acl_type == ACL_TYPE_DEFAULT) {
> -		count = le16_to_cpu(cifs_acl->access_entry_count);
> -		size = sizeof(struct cifs_posix_acl);
> -		size += sizeof(struct cifs_posix_ace) * count;
> -/* skip past access ACEs to get to default ACEs */
> -		pACE = &cifs_acl->ace_array[count];
> -		count = le16_to_cpu(cifs_acl->default_entry_count);
> -		size += sizeof(struct cifs_posix_ace) * count;
> -		/* check if we would go beyond end of SMB */
> -		if (size_of_data_area < size)
> -			return -EINVAL;
> -	} else {
> -		/* illegal type */
> -		return -EINVAL;
> -	}
> -
> -	size = posix_acl_xattr_size(count);
> -	if ((buflen == 0) || (local_acl == NULL)) {
> -		/* used to query ACL EA size */
> -	} else if (size > buflen) {
> -		return -ERANGE;
> -	} else /* buffer big enough */ {
> -		struct posix_acl_xattr_entry *ace = (void *)(local_acl + 1);
> -
> -		local_acl->a_version = cpu_to_le32(POSIX_ACL_XATTR_VERSION);
> -		for (i = 0; i < count ; i++) {
> -			cifs_convert_ace(&ace[i], pACE);
> -			pACE++;
> -		}
> -	}
> -	return size;
> -}
> -
> -static void convert_ace_to_cifs_ace(struct cifs_posix_ace *cifs_ace,
> -				     const struct posix_acl_xattr_entry *local_ace)
> -{
> -	cifs_ace->cifs_e_perm = le16_to_cpu(local_ace->e_perm);
> -	cifs_ace->cifs_e_tag =  le16_to_cpu(local_ace->e_tag);
> -	/* BB is there a better way to handle the large uid? */
> -	if (local_ace->e_id == cpu_to_le32(-1)) {
> -	/* Probably no need to le convert -1 on any arch but can not hurt */
> -		cifs_ace->cifs_uid = cpu_to_le64(-1);
> -	} else
> -		cifs_ace->cifs_uid = cpu_to_le64(le32_to_cpu(local_ace->e_id));
> -/*
> -	cifs_dbg(FYI, "perm %d tag %d id %d\n",
> -		 ace->e_perm, ace->e_tag, ace->e_id);
> -*/
> -}
> -
> -/* Convert ACL from local Linux POSIX xattr to CIFS POSIX ACL wire format */
> -static __u16 ACL_to_cifs_posix(char *parm_data, const char *pACL,
> -			       const int buflen, const int acl_type)
> -{
> -	__u16 rc = 0;
> -	struct cifs_posix_acl *cifs_acl = (struct cifs_posix_acl *)parm_data;
> -	struct posix_acl_xattr_header *local_acl = (void *)pACL;
> -	struct posix_acl_xattr_entry *ace = (void *)(local_acl + 1);
> -	int count;
> -	int i;
> -
> -	if ((buflen == 0) || (pACL == NULL) || (cifs_acl == NULL))
> -		return 0;
> -
> -	count = posix_acl_xattr_count((size_t)buflen);
> -	cifs_dbg(FYI, "setting acl with %d entries from buf of length %d and version of %d\n",
> -		 count, buflen, le32_to_cpu(local_acl->a_version));
> -	if (le32_to_cpu(local_acl->a_version) != 2) {
> -		cifs_dbg(FYI, "unknown POSIX ACL version %d\n",
> -			 le32_to_cpu(local_acl->a_version));
> -		return 0;
> -	}
> -	cifs_acl->version = cpu_to_le16(1);
> -	if (acl_type == ACL_TYPE_ACCESS) {
> -		cifs_acl->access_entry_count = cpu_to_le16(count);
> -		cifs_acl->default_entry_count = cpu_to_le16(0xFFFF);
> -	} else if (acl_type == ACL_TYPE_DEFAULT) {
> -		cifs_acl->default_entry_count = cpu_to_le16(count);
> -		cifs_acl->access_entry_count = cpu_to_le16(0xFFFF);
> -	} else {
> -		cifs_dbg(FYI, "unknown ACL type %d\n", acl_type);
> -		return 0;
> -	}
> -	for (i = 0; i < count; i++)
> -		convert_ace_to_cifs_ace(&cifs_acl->ace_array[i], &ace[i]);
> -	if (rc == 0) {
> -		rc = (__u16)(count * sizeof(struct cifs_posix_ace));
> -		rc += sizeof(struct cifs_posix_acl);
> -		/* BB add check to make sure ACL does not overflow SMB */
> -	}
> -	return rc;
> -}
> -
> -int
> -CIFSSMBGetPosixACL(const unsigned int xid, struct cifs_tcon *tcon,
> -		   const unsigned char *searchName,
> -		   char *acl_inf, const int buflen, const int acl_type,
> -		   const struct nls_table *nls_codepage, int remap)
> -{
> -/* SMB_QUERY_POSIX_ACL */
> -	TRANSACTION2_QPI_REQ *pSMB = NULL;
> -	TRANSACTION2_QPI_RSP *pSMBr = NULL;
> -	int rc = 0;
> -	int bytes_returned;
> -	int name_len;
> -	__u16 params, byte_count;
> -
> -	cifs_dbg(FYI, "In GetPosixACL (Unix) for path %s\n", searchName);
> -
> -queryAclRetry:
> -	rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
> -		(void **) &pSMBr);
> -	if (rc)
> -		return rc;
> -
> -	if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
> -		name_len =
> -			cifsConvertToUTF16((__le16 *) pSMB->FileName,
> -					   searchName, PATH_MAX, nls_codepage,
> -					   remap);
> -		name_len++;     /* trailing null */
> -		name_len *= 2;
> -		pSMB->FileName[name_len] = 0;
> -		pSMB->FileName[name_len+1] = 0;
> -	} else {
> -		name_len = copy_path_name(pSMB->FileName, searchName);
> -	}
> -
> -	params = 2 /* level */  + 4 /* rsrvd */  + name_len /* incl null */ ;
> -	pSMB->TotalDataCount = 0;
> -	pSMB->MaxParameterCount = cpu_to_le16(2);
> -	/* BB find exact max data count below from sess structure BB */
> -	pSMB->MaxDataCount = cpu_to_le16(4000);
> -	pSMB->MaxSetupCount = 0;
> -	pSMB->Reserved = 0;
> -	pSMB->Flags = 0;
> -	pSMB->Timeout = 0;
> -	pSMB->Reserved2 = 0;
> -	pSMB->ParameterOffset = cpu_to_le16(
> -		offsetof(struct smb_com_transaction2_qpi_req,
> -			 InformationLevel) - 4);
> -	pSMB->DataCount = 0;
> -	pSMB->DataOffset = 0;
> -	pSMB->SetupCount = 1;
> -	pSMB->Reserved3 = 0;
> -	pSMB->SubCommand = cpu_to_le16(TRANS2_QUERY_PATH_INFORMATION);
> -	byte_count = params + 1 /* pad */ ;
> -	pSMB->TotalParameterCount = cpu_to_le16(params);
> -	pSMB->ParameterCount = pSMB->TotalParameterCount;
> -	pSMB->InformationLevel = cpu_to_le16(SMB_QUERY_POSIX_ACL);
> -	pSMB->Reserved4 = 0;
> -	inc_rfc1001_len(pSMB, byte_count);
> -	pSMB->ByteCount = cpu_to_le16(byte_count);
> -
> -	rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
> -		(struct smb_hdr *) pSMBr, &bytes_returned, 0);
> -	cifs_stats_inc(&tcon->stats.cifs_stats.num_acl_get);
> -	if (rc) {
> -		cifs_dbg(FYI, "Send error in Query POSIX ACL = %d\n", rc);
> -	} else {
> -		/* decode response */
> -
> -		rc = validate_t2((struct smb_t2_rsp *)pSMBr);
> -		/* BB also check enough total bytes returned */
> -		if (rc || get_bcc(&pSMBr->hdr) < 2)
> -			rc = -EIO;      /* bad smb */
> -		else {
> -			__u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);
> -			__u16 count = le16_to_cpu(pSMBr->t2.DataCount);
> -			rc = cifs_copy_posix_acl(acl_inf,
> -				(char *)&pSMBr->hdr.Protocol+data_offset,
> -				buflen, acl_type, count);
> -		}
> -	}
> -	cifs_buf_release(pSMB);
> -	if (rc == -EAGAIN)
> -		goto queryAclRetry;
> -	return rc;
> -}
> -
> -int
> -CIFSSMBSetPosixACL(const unsigned int xid, struct cifs_tcon *tcon,
> -		   const unsigned char *fileName,
> -		   const char *local_acl, const int buflen,
> -		   const int acl_type,
> -		   const struct nls_table *nls_codepage, int remap)
> -{
> -	struct smb_com_transaction2_spi_req *pSMB = NULL;
> -	struct smb_com_transaction2_spi_rsp *pSMBr = NULL;
> -	char *parm_data;
> -	int name_len;
> -	int rc = 0;
> -	int bytes_returned = 0;
> -	__u16 params, byte_count, data_count, param_offset, offset;
> -
> -	cifs_dbg(FYI, "In SetPosixACL (Unix) for path %s\n", fileName);
> -setAclRetry:
> -	rc = smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB,
> -		      (void **) &pSMBr);
> -	if (rc)
> -		return rc;
> -	if (pSMB->hdr.Flags2 & SMBFLG2_UNICODE) {
> -		name_len =
> -			cifsConvertToUTF16((__le16 *) pSMB->FileName, fileName,
> -					   PATH_MAX, nls_codepage, remap);
> -		name_len++;     /* trailing null */
> -		name_len *= 2;
> -	} else {
> -		name_len = copy_path_name(pSMB->FileName, fileName);
> -	}
> -	params = 6 + name_len;
> -	pSMB->MaxParameterCount = cpu_to_le16(2);
> -	/* BB find max SMB size from sess */
> -	pSMB->MaxDataCount = cpu_to_le16(1000);
> -	pSMB->MaxSetupCount = 0;
> -	pSMB->Reserved = 0;
> -	pSMB->Flags = 0;
> -	pSMB->Timeout = 0;
> -	pSMB->Reserved2 = 0;
> -	param_offset = offsetof(struct smb_com_transaction2_spi_req,
> -				InformationLevel) - 4;
> -	offset = param_offset + params;
> -	parm_data = ((char *) &pSMB->hdr.Protocol) + offset;
> -	pSMB->ParameterOffset = cpu_to_le16(param_offset);
> -
> -	/* convert to on the wire format for POSIX ACL */
> -	data_count = ACL_to_cifs_posix(parm_data, local_acl, buflen, acl_type);
> -
> -	if (data_count == 0) {
> -		rc = -EOPNOTSUPP;
> -		goto setACLerrorExit;
> -	}
> -	pSMB->DataOffset = cpu_to_le16(offset);
> -	pSMB->SetupCount = 1;
> -	pSMB->Reserved3 = 0;
> -	pSMB->SubCommand = cpu_to_le16(TRANS2_SET_PATH_INFORMATION);
> -	pSMB->InformationLevel = cpu_to_le16(SMB_SET_POSIX_ACL);
> -	byte_count = 3 /* pad */  + params + data_count;
> -	pSMB->DataCount = cpu_to_le16(data_count);
> -	pSMB->TotalDataCount = pSMB->DataCount;
> -	pSMB->ParameterCount = cpu_to_le16(params);
> -	pSMB->TotalParameterCount = pSMB->ParameterCount;
> -	pSMB->Reserved4 = 0;
> -	inc_rfc1001_len(pSMB, byte_count);
> -	pSMB->ByteCount = cpu_to_le16(byte_count);
> -	rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB,
> -			 (struct smb_hdr *) pSMBr, &bytes_returned, 0);
> -	if (rc)
> -		cifs_dbg(FYI, "Set POSIX ACL returned %d\n", rc);
> -
> -setACLerrorExit:
> -	cifs_buf_release(pSMB);
> -	if (rc == -EAGAIN)
> -		goto setAclRetry;
> -	return rc;
> -}
> -
>  #ifdef CONFIG_FS_POSIX_ACL
>  /**
>   * cifs_init_posix_acl - convert ACL from cifs to POSIX ACL format
> diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c
> index 998fa51f9b68..293ffe89d6b2 100644
> --- a/fs/cifs/xattr.c
> +++ b/fs/cifs/xattr.c
> @@ -200,32 +200,6 @@ static int cifs_xattr_set(const struct xattr_handler *handler,
>  		}
>  		break;
>  	}
> -
> -#ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
> -	case XATTR_ACL_ACCESS:
> -#ifdef CONFIG_CIFS_POSIX
> -		if (!value)
> -			goto out;
> -		if (sb->s_flags & SB_POSIXACL)
> -			rc = CIFSSMBSetPosixACL(xid, pTcon, full_path,
> -				value, (const int)size,
> -				ACL_TYPE_ACCESS, cifs_sb->local_nls,
> -				cifs_remap(cifs_sb));
> -#endif  /* CONFIG_CIFS_POSIX */
> -		break;
> -
> -	case XATTR_ACL_DEFAULT:
> -#ifdef CONFIG_CIFS_POSIX
> -		if (!value)
> -			goto out;
> -		if (sb->s_flags & SB_POSIXACL)
> -			rc = CIFSSMBSetPosixACL(xid, pTcon, full_path,
> -				value, (const int)size,
> -				ACL_TYPE_DEFAULT, cifs_sb->local_nls,
> -				cifs_remap(cifs_sb));
> -#endif  /* CONFIG_CIFS_POSIX */
> -		break;
> -#endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
>  	}
>  
>  out:
> @@ -366,27 +340,6 @@ static int cifs_xattr_get(const struct xattr_handler *handler,
>  		}
>  		break;
>  	}
> -#ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
> -	case XATTR_ACL_ACCESS:
> -#ifdef CONFIG_CIFS_POSIX
> -		if (sb->s_flags & SB_POSIXACL)
> -			rc = CIFSSMBGetPosixACL(xid, pTcon, full_path,
> -				value, size, ACL_TYPE_ACCESS,
> -				cifs_sb->local_nls,
> -				cifs_remap(cifs_sb));
> -#endif  /* CONFIG_CIFS_POSIX */
> -		break;
> -
> -	case XATTR_ACL_DEFAULT:
> -#ifdef CONFIG_CIFS_POSIX
> -		if (sb->s_flags & SB_POSIXACL)
> -			rc = CIFSSMBGetPosixACL(xid, pTcon, full_path,
> -				value, size, ACL_TYPE_DEFAULT,
> -				cifs_sb->local_nls,
> -				cifs_remap(cifs_sb));
> -#endif  /* CONFIG_CIFS_POSIX */
> -		break;
> -#endif /* ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
>  	}
>  
>  	/* We could add an additional check for streams ie
> @@ -525,21 +478,6 @@ static const struct xattr_handler smb3_ntsd_full_xattr_handler = {
>  	.set = cifs_xattr_set,
>  };
>  
> -
> -static const struct xattr_handler cifs_posix_acl_access_xattr_handler = {
> -	.name = XATTR_NAME_POSIX_ACL_ACCESS,
> -	.flags = XATTR_ACL_ACCESS,
> -	.get = cifs_xattr_get,
> -	.set = cifs_xattr_set,
> -};
> -
> -static const struct xattr_handler cifs_posix_acl_default_xattr_handler = {
> -	.name = XATTR_NAME_POSIX_ACL_DEFAULT,
> -	.flags = XATTR_ACL_DEFAULT,
> -	.get = cifs_xattr_get,
> -	.set = cifs_xattr_set,
> -};
> -
>  const struct xattr_handler *cifs_xattr_handlers[] = {
>  	&cifs_user_xattr_handler,
>  	&cifs_os2_xattr_handler,
> @@ -549,7 +487,9 @@ const struct xattr_handler *cifs_xattr_handlers[] = {
>  	&smb3_ntsd_xattr_handler, /* alias for above since avoiding "cifs" */
>  	&cifs_cifs_ntsd_full_xattr_handler,
>  	&smb3_ntsd_full_xattr_handler, /* alias for above since avoiding "cifs" */
> -	&cifs_posix_acl_access_xattr_handler,
> -	&cifs_posix_acl_default_xattr_handler,
> +#ifdef CONFIG_XFS_POSIX_ACL

This was pointed out to me this morning:

s/CONFIG_XFS_POSIX_ACL/CONFIG_FS_POSIX_ACL/

I've fixed the places with this copy paste already in my tree.

  reply	other threads:[~2022-09-29  7:56 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-28 16:08 [PATCH v3 00/29] acl: add vfs posix acl api Christian Brauner
2022-09-28 16:08 ` [PATCH v3 01/29] orangefs: rework posix acl handling when creating new filesystem objects Christian Brauner
2022-09-29  7:50   ` Christoph Hellwig
2022-09-28 16:08 ` [PATCH v3 02/29] fs: pass dentry to set acl method Christian Brauner
2022-09-29  7:51   ` Christoph Hellwig
2022-09-29  7:57     ` Christian Brauner
2022-09-28 16:08 ` [PATCH v3 03/29] fs: rename current get " Christian Brauner
2022-09-29  8:12   ` Christoph Hellwig
2022-09-29  9:16     ` Christian Brauner
2022-09-28 16:08 ` [PATCH v3 04/29] fs: add new " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 05/29] cifs: implement " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 06/29] cifs: implement set " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 07/29] 9p: implement get " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 08/29] 9p: implement set " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 09/29] security: add get, remove and set acl hook Christian Brauner
2022-09-28 16:08 ` [PATCH v3 10/29] selinux: implement get, set and remove " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 11/29] smack: " Christian Brauner
2022-09-28 16:34   ` Casey Schaufler
2022-09-28 16:08 ` [PATCH v3 12/29] integrity: implement get and set " Christian Brauner
2022-09-29 23:25   ` Mimi Zohar
2022-09-30  8:35     ` Christian Brauner
2022-09-28 16:08 ` [PATCH v3 13/29] evm: add post " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 14/29] acl: add vfs_set_acl() Christian Brauner
2022-09-29  8:17   ` Christoph Hellwig
2022-09-29  8:25     ` Christian Brauner
2022-09-29  9:01       ` Christian Brauner
2022-09-28 16:08 ` [PATCH v3 15/29] acl: add vfs_get_acl() Christian Brauner
2022-09-28 16:08 ` [PATCH v3 16/29] acl: add vfs_remove_acl() Christian Brauner
2022-09-28 16:08 ` [PATCH v3 17/29] ksmbd: use vfs_remove_acl() Christian Brauner
2022-09-28 16:08 ` [PATCH v3 18/29] ecryptfs: implement get acl method Christian Brauner
2022-09-28 16:08 ` [PATCH v3 19/29] ecryptfs: implement set " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 20/29] ovl: implement get " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 21/29] ovl: implement set " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 22/29] ovl: use posix acl api Christian Brauner
2022-09-28 16:08 ` [PATCH v3 23/29] xattr: " Christian Brauner
2022-09-29  8:25   ` Christoph Hellwig
2022-09-29  9:10     ` Christian Brauner
2022-09-29  9:46       ` Christian Brauner
2022-09-29 10:51         ` Christoph Hellwig
2022-09-29 11:39           ` Christian Brauner
2022-09-28 16:08 ` [PATCH v3 24/29] evm: remove evm_xattr_acl_change() Christian Brauner
2022-09-28 16:08 ` [PATCH v3 25/29] ecryptfs: use stub posix acl handlers Christian Brauner
2022-09-28 16:08 ` [PATCH v3 26/29] ovl: " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 27/29] cifs: " Christian Brauner
2022-09-29  7:56   ` Christian Brauner [this message]
2022-09-28 16:08 ` [PATCH v3 28/29] 9p: " Christian Brauner
2022-09-28 16:08 ` [PATCH v3 29/29] acl: remove a slew of now unused helpers Christian Brauner
2022-09-29  8:25   ` Christoph Hellwig
2022-09-29  8:28     ` Christian Brauner
2022-09-29 11:40       ` Christoph Hellwig
2022-09-29 13:10         ` Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220929075610.jp2kcthlsu7zs5dr@wittgenstein \
    --to=brauner@kernel.org \
    --cc=hch@lst.de \
    --cc=hyc.lee@gmail.com \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=lsahlber@redhat.com \
    --cc=pc@cjr.nz \
    --cc=senozhatsky@chromium.org \
    --cc=sforshee@kernel.org \
    --cc=sfrench@samba.org \
    --cc=sprasad@microsoft.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.