OSDN Git Service

f2fs: avoid null pointer exception in dcc_info
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 25 Jan 2019 20:05:25 +0000 (12:05 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sat, 16 Feb 2019 04:59:45 +0000 (20:59 -0800)
If dcc_info is not set yet, we can get null pointer panic.

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h

index fe95abb..8c928cd 100644 (file)
@@ -2161,10 +2161,17 @@ static inline bool is_idle(struct f2fs_sb_info *sbi, int type)
                get_pages(sbi, F2FS_RD_META) || get_pages(sbi, F2FS_WB_DATA) ||
                get_pages(sbi, F2FS_WB_CP_DATA) ||
                get_pages(sbi, F2FS_DIO_READ) ||
-               get_pages(sbi, F2FS_DIO_WRITE) ||
-               atomic_read(&SM_I(sbi)->dcc_info->queued_discard) ||
-               atomic_read(&SM_I(sbi)->fcc_info->queued_flush))
+               get_pages(sbi, F2FS_DIO_WRITE))
                return false;
+
+       if (SM_I(sbi) && SM_I(sbi)->dcc_info &&
+                       atomic_read(&SM_I(sbi)->dcc_info->queued_discard))
+               return false;
+
+       if (SM_I(sbi) && SM_I(sbi)->fcc_info &&
+                       atomic_read(&SM_I(sbi)->fcc_info->queued_flush))
+               return false;
+
        return f2fs_time_over(sbi, type);
 }