提交 9b61780a 编写于 作者: Z zhong jiang 提交者: Xie XiuQi

Revert "hugetlbfs: fix memory leak for resv_map"

euler inclusion
category: bugfix
bugzilla: 16023
CVE: NA

-------------------------------------------------

This reverts commit 4071356cf5d605305f53ccaf5bdba6ba3f4dd59c.
Signed-off-by: Nzhong jiang <zhongjiang@huawei.com>
Reviewed-by: NYufen Yu <yuyufen@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 f798aca7
...@@ -482,15 +482,11 @@ static void hugetlbfs_evict_inode(struct inode *inode) ...@@ -482,15 +482,11 @@ static void hugetlbfs_evict_inode(struct inode *inode)
{ {
struct resv_map *resv_map; struct resv_map *resv_map;
struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode);
remove_inode_hugepages(inode, 0, LLONG_MAX); remove_inode_hugepages(inode, 0, LLONG_MAX);
resv_map = info->resv_map; resv_map = (struct resv_map *)inode->i_mapping->private_data;
/* root inode doesn't have the resv_map, so we should check it */ /* root inode doesn't have the resv_map, so we should check it */
if (resv_map) { if (resv_map)
resv_map_release(&resv_map->refs); resv_map_release(&resv_map->refs);
info->resv_map = NULL;
}
clear_inode(inode); clear_inode(inode);
} }
...@@ -759,7 +755,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, ...@@ -759,7 +755,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,
&hugetlbfs_i_mmap_rwsem_key); &hugetlbfs_i_mmap_rwsem_key);
inode->i_mapping->a_ops = &hugetlbfs_aops; inode->i_mapping->a_ops = &hugetlbfs_aops;
inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
info->resv_map = resv_map; inode->i_mapping->private_data = resv_map;
info->seals = F_SEAL_SEAL; info->seals = F_SEAL_SEAL;
switch (mode & S_IFMT) { switch (mode & S_IFMT) {
default: default:
...@@ -1027,7 +1023,6 @@ static struct inode *hugetlbfs_alloc_inode(struct super_block *sb) ...@@ -1027,7 +1023,6 @@ static struct inode *hugetlbfs_alloc_inode(struct super_block *sb)
* private inode. This simplifies hugetlbfs_destroy_inode. * private inode. This simplifies hugetlbfs_destroy_inode.
*/ */
mpol_shared_policy_init(&p->policy, NULL); mpol_shared_policy_init(&p->policy, NULL);
p->resv_map = NULL;
return &p->vfs_inode; return &p->vfs_inode;
} }
...@@ -1042,7 +1037,6 @@ static void hugetlbfs_destroy_inode(struct inode *inode) ...@@ -1042,7 +1037,6 @@ static void hugetlbfs_destroy_inode(struct inode *inode)
{ {
hugetlbfs_inc_free_inodes(HUGETLBFS_SB(inode->i_sb)); hugetlbfs_inc_free_inodes(HUGETLBFS_SB(inode->i_sb));
mpol_free_shared_policy(&HUGETLBFS_I(inode)->policy); mpol_free_shared_policy(&HUGETLBFS_I(inode)->policy);
HUGETLBFS_I(inode)->resv_map = NULL;
call_rcu(&inode->i_rcu, hugetlbfs_i_callback); call_rcu(&inode->i_rcu, hugetlbfs_i_callback);
} }
......
...@@ -289,7 +289,6 @@ struct hugetlbfs_inode_info { ...@@ -289,7 +289,6 @@ struct hugetlbfs_inode_info {
struct shared_policy policy; struct shared_policy policy;
struct inode vfs_inode; struct inode vfs_inode;
unsigned int seals; unsigned int seals;
struct resv_map *resv_map;
}; };
static inline struct hugetlbfs_inode_info *HUGETLBFS_I(struct inode *inode) static inline struct hugetlbfs_inode_info *HUGETLBFS_I(struct inode *inode)
......
...@@ -739,7 +739,7 @@ void resv_map_release(struct kref *ref) ...@@ -739,7 +739,7 @@ void resv_map_release(struct kref *ref)
static inline struct resv_map *inode_resv_map(struct inode *inode) static inline struct resv_map *inode_resv_map(struct inode *inode)
{ {
return HUGETLBFS_I(inode)->resv_map; return inode->i_mapping->private_data;
} }
static struct resv_map *vma_resv_map(struct vm_area_struct *vma) static struct resv_map *vma_resv_map(struct vm_area_struct *vma)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册