Commit 927cc5ce authored by Zhihao Cheng's avatar Zhihao Cheng Committed by Richard Weinberger

ubifs: ubifs_add_orphan: Fix a memory leak bug

Memory leak occurs when files with extended attributes are added to
orphan list.
Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Fixes: 988bec41 ("ubifs: orphan: Handle xattrs like files")
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 81423c78
...@@ -157,7 +157,7 @@ int ubifs_add_orphan(struct ubifs_info *c, ino_t inum) ...@@ -157,7 +157,7 @@ int ubifs_add_orphan(struct ubifs_info *c, ino_t inum)
int err = 0; int err = 0;
ino_t xattr_inum; ino_t xattr_inum;
union ubifs_key key; union ubifs_key key;
struct ubifs_dent_node *xent; struct ubifs_dent_node *xent, *pxent = NULL;
struct fscrypt_name nm = {0}; struct fscrypt_name nm = {0};
struct ubifs_orphan *xattr_orphan; struct ubifs_orphan *xattr_orphan;
struct ubifs_orphan *orphan; struct ubifs_orphan *orphan;
...@@ -181,11 +181,16 @@ int ubifs_add_orphan(struct ubifs_info *c, ino_t inum) ...@@ -181,11 +181,16 @@ int ubifs_add_orphan(struct ubifs_info *c, ino_t inum)
xattr_inum = le64_to_cpu(xent->inum); xattr_inum = le64_to_cpu(xent->inum);
xattr_orphan = orphan_add(c, xattr_inum, orphan); xattr_orphan = orphan_add(c, xattr_inum, orphan);
if (IS_ERR(xattr_orphan)) if (IS_ERR(xattr_orphan)) {
kfree(xent);
return PTR_ERR(xattr_orphan); return PTR_ERR(xattr_orphan);
}
kfree(pxent);
pxent = xent;
key_read(c, &xent->key, &key); key_read(c, &xent->key, &key);
} }
kfree(pxent);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment