quota: Fix maximum quota limit settings
authorJan Kara <jack@suse.cz>
Wed, 4 Mar 2015 13:42:02 +0000 (14:42 +0100)
committerJan Kara <jack@suse.cz>
Wed, 4 Mar 2015 15:42:46 +0000 (16:42 +0100)
commit7e08da50cf706151f324349f9235ebd311226997
tree3573b83be3cf4f8ee26c92b91d7aad3a4892ef5a
parent781970240a56d1c15a9b8ee37d28987b8182f060
quota: Fix maximum quota limit settings

Currently quota format that supports 64-bit usage sets maximum quota
limit as 2^64-1. However quota core code uses signed numbers to track
usage and even limits themselves are stored in long long. Checking of
maximum allowable limits worked by luck until commit 14bf61ffe6ac
(quota: Switch ->get_dqblk() and ->set_dqblk() to use bytes as space
units) because variable we compared with was unsigned. After that commit
the type we compared against changed to signed and thus checks for
maximum limits with the newest VFS quota format started to refuse any
non-negative value. Later the problem was inadvertedly fixed by commit
b10a08194c2b (quota: Store maximum space limit in bytes) because we
started to compare against unsigned type as well.

Fix possible future problems of this kind by setting maximum limits to
2^63-1 to avoid overflow issues.

Reported-by: Carlos Carvalho <carlos@fisica.ufpr.br>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/quota_v2.c