[PATCH] jfs: Add missing NULL pointer check in __get_metapage

Juerg Haefliger <[email protected]>
Newsgroups gmane.comp.file-systems.jfs.general
Message-ID <20171004082441.2405-1-juerg.haefliger__15400.0175455169$1507105530$gmane$org@canonical.com>
alloc_metapage can return a NULL pointer so check for that. And also emit
an error message if that happens.

Signed-off-by: Juerg Haefliger <[email protected]>
---
 fs/jfs/jfs_metapage.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c
index 1c4b9ad4d7ab..00f21af66872 100644
--- a/fs/jfs/jfs_metapage.c
+++ b/fs/jfs/jfs_metapage.c
@@ -187,14 +187,18 @@ static inline struct metapage *alloc_metapage(gfp_t gfp_mask)
 {
 	struct metapage *mp = mempool_alloc(metapage_mempool, gfp_mask);
 
-	if (mp) {
-		mp->lid = 0;
-		mp->lsn = 0;
-		mp->data = NULL;
-		mp->clsn = 0;
-		mp->log = NULL;
-		init_waitqueue_head(&mp->wait);
+	if (!mp) {
+		jfs_err("mempool_alloc failed!\n");
+		return NULL;
 	}
+
+	mp->lid = 0;
+	mp->lsn = 0;
+	mp->data = NULL;
+	mp->clsn = 0;
+	mp->log = NULL;
+	init_waitqueue_head(&mp->wait);
+
 	return mp;
 }
 
@@ -663,6 +667,8 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
 	} else {
 		INCREMENT(mpStat.pagealloc);
 		mp = alloc_metapage(GFP_NOFS);
+		if (!mp)
+			goto unlock;
 		mp->page = page;
 		mp->sb = inode->i_sb;
 		mp->flag = 0;
-- 
2.14.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.