diff options
author | Konstantin Khlebnikov <khlebnikov@yandex-team.ru> | 2015-02-12 12:36:49 +0300 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2015-03-04 16:42:45 +0100 |
commit | 69a25ee217ba8c93a6d4c6671d9208c0155c0485 (patch) | |
tree | 73a30e75c15e5d0a6533db1852e4b193491e3e6a /fs/quota/quota_tree.c | |
parent | 5bcd3b6f639c277ed7fa71f2f8ed6fb072615011 (diff) | |
download | lwn-69a25ee217ba8c93a6d4c6671d9208c0155c0485.tar.gz lwn-69a25ee217ba8c93a6d4c6671d9208c0155c0485.zip |
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>
Diffstat (limited to 'fs/quota/quota_tree.c')
-rw-r--r-- | fs/quota/quota_tree.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c index d65877fbe8f4..58efb83dec1c 100644 --- a/fs/quota/quota_tree.c +++ b/fs/quota/quota_tree.c @@ -349,6 +349,13 @@ static inline int dq_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot) { 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); } |