浏览代码

quota: paranoia: check quota tree root

Root level in quota tree must be already allocated otherwise this block
could be used for something else.

Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Signed-off-by: Jan Kara <jack@suse.cz>
Konstantin Khlebnikov 11 年之前
父节点
当前提交
69a25ee217
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      fs/quota/quota_tree.c

+ 7 - 0
fs/quota/quota_tree.c

@@ -349,6 +349,13 @@ static inline int dq_insert_tree(struct qtree_mem_dqinfo *info,
 				 struct dquot *dquot)
 				 struct dquot *dquot)
 {
 {
 	int tmp = QT_TREEOFF;
 	int tmp = QT_TREEOFF;
+
+#ifdef __QUOTA_QT_PARANOIA
+	if (info->dqi_blocks <= QT_TREEOFF) {
+		quota_error(dquot->dq_sb, "Quota tree root isn't allocated!");
+		return -EIO;
+	}
+#endif
 	return do_insert_tree(info, dquot, &tmp, 0);
 	return do_insert_tree(info, dquot, &tmp, 0);
 }
 }