]> err.no Git - linux-2.6/commitdiff
[PATCH] quota: possible bug in quota format v2 support
authorNiu YaWei <niu@clusterfs.com>
Sat, 16 Apr 2005 22:25:47 +0000 (15:25 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 16 Apr 2005 22:25:47 +0000 (15:25 -0700)
Don't put root block of quota tree to the free list (when quota file is
completely empty).  That should not actually happen anyway (somebody should
get accounted for the filesystem root and so quota file should never be
empty) but better prevent it here than solve magical quota file
corruption.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/quota_v2.c

index 19bdb7b86ca77b436b63f8dc6f0dbf5493bc4b36..7afcbb1b93761a539ddb8d31f4448b122f6f5e6b 100644 (file)
@@ -503,7 +503,8 @@ static int remove_tree(struct dquot *dquot, uint *blk, int depth)
                int i;
                ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(0);
                for (i = 0; i < V2_DQBLKSIZE && !buf[i]; i++);  /* Block got empty? */
-               if (i == V2_DQBLKSIZE) {
+               /* Don't put the root block into the free block list */
+               if (i == V2_DQBLKSIZE && *blk != V2_DQTREEOFF) {
                        put_free_dqblk(sb, type, buf, *blk);
                        *blk = 0;
                }