diff options
Diffstat (limited to 'fs/ecryptfs/mmap.c')
| -rw-r--r-- | fs/ecryptfs/mmap.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c index 270f42ae7c0..bea998a25af 100644 --- a/fs/ecryptfs/mmap.c +++ b/fs/ecryptfs/mmap.c @@ -82,6 +82,19 @@ out:  	return rc;  } +static void strip_xattr_flag(char *page_virt, +			     struct ecryptfs_crypt_stat *crypt_stat) +{ +	if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) { +		size_t written; + +		crypt_stat->flags &= ~ECRYPTFS_METADATA_IN_XATTR; +		ecryptfs_write_crypt_stat_flags(page_virt, crypt_stat, +						&written); +		crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR; +	} +} +  /**   *   Header Extent:   *     Octets 0-7:        Unencrypted file size (big-endian) @@ -136,6 +149,7 @@ ecryptfs_copy_up_encrypted_with_header(struct page *page,  				rc = ecryptfs_read_xattr_region(  					page_virt, page->mapping->host); +				strip_xattr_flag(page_virt + 16, crypt_stat);  				ecryptfs_write_header_metadata(page_virt + 20,  							       crypt_stat,  							       &written);  |