diff options
Diffstat (limited to 'fs/ext4')
| -rw-r--r-- | fs/ext4/acl.c | 31 | ||||
| -rw-r--r-- | fs/ext4/inode.c | 14 | ||||
| -rw-r--r-- | fs/ext4/mballoc.c | 2 | ||||
| -rw-r--r-- | fs/ext4/super.c | 2 | 
4 files changed, 31 insertions, 18 deletions
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c index a5c29bb3b83..d3c5b88fd89 100644 --- a/fs/ext4/acl.c +++ b/fs/ext4/acl.c @@ -55,16 +55,23 @@ ext4_acl_from_disk(const void *value, size_t size)  		case ACL_OTHER:  			value = (char *)value +  				sizeof(ext4_acl_entry_short); -			acl->a_entries[n].e_id = ACL_UNDEFINED_ID;  			break;  		case ACL_USER: +			value = (char *)value + sizeof(ext4_acl_entry); +			if ((char *)value > end) +				goto fail; +			acl->a_entries[n].e_uid = +				make_kuid(&init_user_ns, +					  le32_to_cpu(entry->e_id)); +			break;  		case ACL_GROUP:  			value = (char *)value + sizeof(ext4_acl_entry);  			if ((char *)value > end)  				goto fail; -			acl->a_entries[n].e_id = -				le32_to_cpu(entry->e_id); +			acl->a_entries[n].e_gid = +				make_kgid(&init_user_ns, +					  le32_to_cpu(entry->e_id));  			break;  		default: @@ -98,13 +105,19 @@ ext4_acl_to_disk(const struct posix_acl *acl, size_t *size)  	ext_acl->a_version = cpu_to_le32(EXT4_ACL_VERSION);  	e = (char *)ext_acl + sizeof(ext4_acl_header);  	for (n = 0; n < acl->a_count; n++) { +		const struct posix_acl_entry *acl_e = &acl->a_entries[n];  		ext4_acl_entry *entry = (ext4_acl_entry *)e; -		entry->e_tag  = cpu_to_le16(acl->a_entries[n].e_tag); -		entry->e_perm = cpu_to_le16(acl->a_entries[n].e_perm); -		switch (acl->a_entries[n].e_tag) { +		entry->e_tag  = cpu_to_le16(acl_e->e_tag); +		entry->e_perm = cpu_to_le16(acl_e->e_perm); +		switch (acl_e->e_tag) {  		case ACL_USER: +			entry->e_id = cpu_to_le32( +				from_kuid(&init_user_ns, acl_e->e_uid)); +			e += sizeof(ext4_acl_entry); +			break;  		case ACL_GROUP: -			entry->e_id = cpu_to_le32(acl->a_entries[n].e_id); +			entry->e_id = cpu_to_le32( +				from_kgid(&init_user_ns, acl_e->e_gid));  			e += sizeof(ext4_acl_entry);  			break; @@ -374,7 +387,7 @@ ext4_xattr_get_acl(struct dentry *dentry, const char *name, void *buffer,  		return PTR_ERR(acl);  	if (acl == NULL)  		return -ENODATA; -	error = posix_acl_to_xattr(acl, buffer, size); +	error = posix_acl_to_xattr(&init_user_ns, acl, buffer, size);  	posix_acl_release(acl);  	return error; @@ -397,7 +410,7 @@ ext4_xattr_set_acl(struct dentry *dentry, const char *name, const void *value,  		return -EPERM;  	if (value) { -		acl = posix_acl_from_xattr(value, size); +		acl = posix_acl_from_xattr(&init_user_ns, value, size);  		if (IS_ERR(acl))  			return PTR_ERR(acl);  		else if (acl) { diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index dff171c3a12..c862ee5fe79 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3313,7 +3313,7 @@ int ext4_discard_partial_page_buffers(handle_t *handle,   * handle: The journal handle   * inode:  The files inode   * page:   A locked page that contains the offset "from" - * from:   The starting byte offset (from the begining of the file) + * from:   The starting byte offset (from the beginning of the file)   *         to begin discarding   * len:    The length of bytes to discard   * flags:  Optional flags that may be used: @@ -3321,11 +3321,11 @@ int ext4_discard_partial_page_buffers(handle_t *handle,   *         EXT4_DISCARD_PARTIAL_PG_ZERO_UNMAPPED   *         Only zero the regions of the page whose buffer heads   *         have already been unmapped.  This flag is appropriate - *         for updateing the contents of a page whose blocks may + *         for updating the contents of a page whose blocks may   *         have already been released, and we only want to zero   *         out the regions that correspond to those released blocks.   * - * Returns zero on sucess or negative on failure. + * Returns zero on success or negative on failure.   */  static int ext4_discard_partial_page_buffers_no_lock(handle_t *handle,  		struct inode *inode, struct page *page, loff_t from, @@ -3486,7 +3486,7 @@ int ext4_can_truncate(struct inode *inode)   * @offset: The offset where the hole will begin   * @len:    The length of the hole   * - * Returns: 0 on sucess or negative on failure + * Returns: 0 on success or negative on failure   */  int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) @@ -4008,7 +4008,7 @@ static int ext4_inode_blocks_set(handle_t *handle,  	if (i_blocks <= ~0U) {  		/* -		 * i_blocks can be represnted in a 32 bit variable +		 * i_blocks can be represented in a 32 bit variable  		 * as multiple of 512 bytes  		 */  		raw_inode->i_blocks_lo   = cpu_to_le32(i_blocks); @@ -4169,7 +4169,7 @@ out_brelse:   *   * - Within generic_file_write() for O_SYNC files.   *   Here, there will be no transaction running. We wait for any running - *   trasnaction to commit. + *   transaction to commit.   *   * - Within sys_sync(), kupdate and such.   *   We wait on commit, if tol to. @@ -4413,7 +4413,7 @@ static int ext4_index_trans_blocks(struct inode *inode, int nrblocks, int chunk)   * worse case, the indexs blocks spread over different block groups   *   * If datablocks are discontiguous, they are possible to spread over - * different block groups too. If they are contiuguous, with flexbg, + * different block groups too. If they are contiguous, with flexbg,   * they could still across block group boundary.   *   * Also account for superblock, inode, quota and xattr blocks diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 8eae94771c4..08778f6cdfe 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -4709,7 +4709,7 @@ error_return:   * ext4_group_add_blocks() -- Add given blocks to an existing group   * @handle:			handle to this transaction   * @sb:				super block - * @block:			start physcial block to add to the block group + * @block:			start physical block to add to the block group   * @count:			number of blocks to free   *   * This marks the blocks as free in the bitmap and buddy. diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 455b7d8c6d6..69c55d4e462 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4796,7 +4796,7 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf)  static inline struct inode *dquot_to_inode(struct dquot *dquot)  { -	return sb_dqopt(dquot->dq_sb)->files[dquot->dq_type]; +	return sb_dqopt(dquot->dq_sb)->files[dquot->dq_id.type];  }  static int ext4_write_dquot(struct dquot *dquot)  |