• Y
    hugetlbfs: fix memory leak for resv_map · bd575e60
    Yufen Yu 提交于
    euler inclusion
    category: bugfix
    bugzilla: 10984
    CVE: NA
    ---------------------------
    
    When .mknod create a block device file in hugetlbfs, it will
    allocate an inode, and kmalloc a 'struct resv_map' in resv_map_alloc().
    For now, inode->i_mapping->private_data is used to point the resv_map.
    However, when open the device, bd_acquire() will set i_mapping as
    bd_inode->imapping, result in resv_map memory leak.
    
    We fix the leak by adding a new entry resv_map in hugetlbfs_inode_info.
    It can store resv_map pointer.
    
    Programs to reproduce:
    	mount -t hugetlbfs nodev hugetlbfs
    	mknod hugetlbfs/dev b 0 0
    	exec 30<> hugetlbfs/dev
    	umount hugetlbfs/
    
    Fixes: 9119a41e ("mm, hugetlb: unify region structure handling")
    Signed-off-by: NYufen Yu <yuyufen@huawei.com>
    Reviewed-by: NMiao Xie <miaoxie@huawei.com>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    bd575e60
hugetlb.h 17.2 KB