diff options
author | Ingo Molnar <mingo@kernel.org> | 2019-05-03 12:52:45 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2019-05-03 12:52:45 +0200 |
commit | 176d2323c7743e03e3bb4298b6f25eea2f00fed0 (patch) | |
tree | c751cba895aa8870372c97c8340166de079eae8e /fs/hugetlbfs/inode.c | |
parent | 9b019acb72e4b5741d88e8936d6f200ed44b66b2 (diff) | |
parent | ea9866793d1e925b4d320eaea409263b2a568f38 (diff) | |
download | talos-op-linux-176d2323c7743e03e3bb4298b6f25eea2f00fed0.tar.gz talos-op-linux-176d2323c7743e03e3bb4298b6f25eea2f00fed0.zip |
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/hugetlbfs/inode.c')
-rw-r--r-- | fs/hugetlbfs/inode.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index ec32fece5e1e..9285dd4f4b1c 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -755,11 +755,17 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, umode_t mode, dev_t dev) { struct inode *inode; - struct resv_map *resv_map; + struct resv_map *resv_map = NULL; - resv_map = resv_map_alloc(); - if (!resv_map) - return NULL; + /* + * Reserve maps are only needed for inodes that can have associated + * page allocations. + */ + if (S_ISREG(mode) || S_ISLNK(mode)) { + resv_map = resv_map_alloc(); + if (!resv_map) + return NULL; + } inode = new_inode(sb); if (inode) { @@ -794,8 +800,10 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, break; } lockdep_annotate_inode_mutex_key(inode); - } else - kref_put(&resv_map->refs, resv_map_release); + } else { + if (resv_map) + kref_put(&resv_map->refs, resv_map_release); + } return inode; } |