It will result in null pointer access if shmem_init_inodecache fail, so check return value of shmem_init_inodecache Signed-off-by: Chen Wandun <chenwandun@xxxxxxxxxx> --- mm/shmem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 12d45a03f7fc..17f8297ece29 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -3775,11 +3775,13 @@ static void shmem_init_inode(void *foo) inode_init_once(&info->vfs_inode); } -static void shmem_init_inodecache(void) +static struct kmem_cache *shmem_init_inodecache(void) { shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", sizeof(struct shmem_inode_info), 0, SLAB_PANIC|SLAB_ACCOUNT, shmem_init_inode); + + return shmem_inode_cachep; } static void shmem_destroy_inodecache(void) @@ -3923,7 +3925,10 @@ void __init shmem_init(void) { int error; - shmem_init_inodecache(); + if (!shmem_init_inodecache()) { + error = -ENOMEM; + goto out2; + } error = register_filesystem(&shmem_fs_type); if (error) { -- 2.25.1