summaryrefslogtreecommitdiffstats
path: root/fs/hugetlbfs/inode.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2019-05-03 12:52:45 +0200
committerIngo Molnar <mingo@kernel.org>2019-05-03 12:52:45 +0200
commit176d2323c7743e03e3bb4298b6f25eea2f00fed0 (patch)
treec751cba895aa8870372c97c8340166de079eae8e /fs/hugetlbfs/inode.c
parent9b019acb72e4b5741d88e8936d6f200ed44b66b2 (diff)
parentea9866793d1e925b4d320eaea409263b2a568f38 (diff)
downloadtalos-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.c20
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;
}
OpenPOWER on IntegriCloud