Re: [PATCH v2] staging: erofs: fix memleak of inode's shared xattr array

2019-02-14 Thread Chao Yu
On 2019/2/14 15:10, Gao Xiang wrote:
> 
> 
> On 2019/2/14 14:46, Sheng Yong wrote:
>> If it fails to read a shared xattr page, the inode's shared xattr array
>> is not freed. The next time the inode's xattr is accessed, the previously
>> allocated array is leaked.

Nice catch!

>>
>> Signed-off-by: Sheng Yong 
> 
> LGTM,
> 
> Fixes: b17500a0fdba ("staging: erofs: introduce xattr & acl support")
> Cc:  # 4.19+
> Reviewed-by: Gao Xiang 

Reviewed-by: Chao Yu 

Thanks,

> 
> [and there is also another race condition in it, but different root cause.
> let me fix it later independently...]
> 
> Thanks,
> Gao Xiang
> 
> .
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2] staging: erofs: fix memleak of inode's shared xattr array

2019-02-13 Thread Gao Xiang



On 2019/2/14 14:46, Sheng Yong wrote:
> If it fails to read a shared xattr page, the inode's shared xattr array
> is not freed. The next time the inode's xattr is accessed, the previously
> allocated array is leaked.
> 
> Signed-off-by: Sheng Yong 

LGTM,

Fixes: b17500a0fdba ("staging: erofs: introduce xattr & acl support")
Cc:  # 4.19+
Reviewed-by: Gao Xiang 

[and there is also another race condition in it, but different root cause.
let me fix it later independently...]

Thanks,
Gao Xiang
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2] staging: erofs: fix memleak of inode's shared xattr array

2019-02-13 Thread Sheng Yong
If it fails to read a shared xattr page, the inode's shared xattr array
is not freed. The next time the inode's xattr is accessed, the previously
allocated array is leaked.

Signed-off-by: Sheng Yong 
---
v2: * s/node/inode in commit message
* add prefix `staging:' to the subject
---
 drivers/staging/erofs/xattr.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/erofs/xattr.c b/drivers/staging/erofs/xattr.c
index 80dca6a4adbe..e3f8b904a680 100644
--- a/drivers/staging/erofs/xattr.c
+++ b/drivers/staging/erofs/xattr.c
@@ -92,8 +92,11 @@ static int init_inode_xattrs(struct inode *inode)
 
it.page = erofs_get_meta_page(sb,
++it.blkaddr, S_ISDIR(inode->i_mode));
-   if (IS_ERR(it.page))
+   if (IS_ERR(it.page)) {
+   kfree(vi->xattr_shared_xattrs);
+   vi->xattr_shared_xattrs = NULL;
return PTR_ERR(it.page);
+   }
 
it.kaddr = kmap_atomic(it.page);
atomic_map = true;
-- 
2.17.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel