diff mbox series

ext2: initialize quota info in ext2_xattr_set()

Message ID 20200626054959.114177-1-cgxu519@mykernel.net
State Not Applicable
Headers show
Series ext2: initialize quota info in ext2_xattr_set() | expand

Commit Message

Chengguang Xu June 26, 2020, 5:49 a.m. UTC
In order to correctly account/limit space usage, should initialize
quota info before calling quota related functions.

Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
---
 fs/ext2/xattr.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Ritesh Harjani July 8, 2020, 10:52 a.m. UTC | #1
On 6/26/20 11:19 AM, Chengguang Xu wrote:
> In order to correctly account/limit space usage, should initialize
> quota info before calling quota related functions.

How did you encounter the problem?
Any test case got hit?

> 
> Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>

LGTM, feel free to add
Reviewed-by: Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>


> ---
>   fs/ext2/xattr.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
> index 943cc469f42f..913e5c4921ec 100644
> --- a/fs/ext2/xattr.c
> +++ b/fs/ext2/xattr.c
> @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,
>   	name_len = strlen(name);
>   	if (name_len > 255 || value_len > sb->s_blocksize)
>   		return -ERANGE;
> +	error = dquot_initialize(inode);
> +	if (error)
> +		return error;
>   	down_write(&EXT2_I(inode)->xattr_sem);
>   	if (EXT2_I(inode)->i_file_acl) {
>   		/* The inode already has an extended attribute block. */
>
Jan Kara July 8, 2020, 11:20 a.m. UTC | #2
On Wed 08-07-20 16:22:01, Ritesh Harjani wrote:
> 
> 
> On 6/26/20 11:19 AM, Chengguang Xu wrote:
> > In order to correctly account/limit space usage, should initialize
> > quota info before calling quota related functions.
> 
> How did you encounter the problem?
> Any test case got hit?
> 
> > 
> > Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
> 
> LGTM, feel free to add
> Reviewed-by: Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>

Thanks. I've added the patch to my tree.

								Honza

> 
> 
> > ---
> >   fs/ext2/xattr.c | 3 +++
> >   1 file changed, 3 insertions(+)
> > 
> > diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
> > index 943cc469f42f..913e5c4921ec 100644
> > --- a/fs/ext2/xattr.c
> > +++ b/fs/ext2/xattr.c
> > @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,
> >   	name_len = strlen(name);
> >   	if (name_len > 255 || value_len > sb->s_blocksize)
> >   		return -ERANGE;
> > +	error = dquot_initialize(inode);
> > +	if (error)
> > +		return error;
> >   	down_write(&EXT2_I(inode)->xattr_sem);
> >   	if (EXT2_I(inode)->i_file_acl) {
> >   		/* The inode already has an extended attribute block. */
> > 
>
Chengguang Xu July 11, 2020, 7:27 a.m. UTC | #3
在 7/8/2020 6:52 PM, Ritesh Harjani 写道:
>
>
> On 6/26/20 11:19 AM, Chengguang Xu wrote:
>> In order to correctly account/limit space usage, should initialize
>> quota info before calling quota related functions.
>
> How did you encounter the problem?
> Any test case got hit?

I found the issue by code inspecting when I was learning mbcache logic.

Thanks,
cgxu

>
>>
>> Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
>
> LGTM, feel free to add
> Reviewed-by: Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>
>
>
>> ---
>>   fs/ext2/xattr.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
>> index 943cc469f42f..913e5c4921ec 100644
>> --- a/fs/ext2/xattr.c
>> +++ b/fs/ext2/xattr.c
>> @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int 
>> name_index, const char *name,
>>       name_len = strlen(name);
>>       if (name_len > 255 || value_len > sb->s_blocksize)
>>           return -ERANGE;
>> +    error = dquot_initialize(inode);
>> +    if (error)
>> +        return error;
>>       down_write(&EXT2_I(inode)->xattr_sem);
>>       if (EXT2_I(inode)->i_file_acl) {
>>           /* The inode already has an extended attribute block. */
>>
diff mbox series

Patch

diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
index 943cc469f42f..913e5c4921ec 100644
--- a/fs/ext2/xattr.c
+++ b/fs/ext2/xattr.c
@@ -437,6 +437,9 @@  ext2_xattr_set(struct inode *inode, int name_index, const char *name,
 	name_len = strlen(name);
 	if (name_len > 255 || value_len > sb->s_blocksize)
 		return -ERANGE;
+	error = dquot_initialize(inode);
+	if (error)
+		return error;
 	down_write(&EXT2_I(inode)->xattr_sem);
 	if (EXT2_I(inode)->i_file_acl) {
 		/* The inode already has an extended attribute block. */