diff options
Diffstat (limited to 'fs/quota/quota_v2.c')
| -rw-r--r-- | fs/quota/quota_v2.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/quota/quota_v2.c b/fs/quota/quota_v2.c index 3dfc23e02135..e3da02f4986f 100644 --- a/fs/quota/quota_v2.c +++ b/fs/quota/quota_v2.c | |||
| @@ -97,8 +97,11 @@ static int v2_read_file_info(struct super_block *sb, int type) | |||
| 97 | unsigned int version; | 97 | unsigned int version; |
| 98 | 98 | ||
| 99 | if (!v2_read_header(sb, type, &dqhead)) | 99 | if (!v2_read_header(sb, type, &dqhead)) |
| 100 | return 0; | 100 | return -1; |
| 101 | version = le32_to_cpu(dqhead.dqh_version); | 101 | version = le32_to_cpu(dqhead.dqh_version); |
| 102 | if ((info->dqi_fmt_id == QFMT_VFS_V0 && version != 0) || | ||
| 103 | (info->dqi_fmt_id == QFMT_VFS_V1 && version != 1)) | ||
| 104 | return -1; | ||
| 102 | 105 | ||
| 103 | size = sb->s_op->quota_read(sb, type, (char *)&dinfo, | 106 | size = sb->s_op->quota_read(sb, type, (char *)&dinfo, |
| 104 | sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); | 107 | sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF); |
| @@ -120,8 +123,8 @@ static int v2_read_file_info(struct super_block *sb, int type) | |||
| 120 | info->dqi_maxilimit = 0xffffffff; | 123 | info->dqi_maxilimit = 0xffffffff; |
| 121 | } else { | 124 | } else { |
| 122 | /* used space is stored as unsigned 64-bit value */ | 125 | /* used space is stored as unsigned 64-bit value */ |
| 123 | info->dqi_maxblimit = 0xffffffffffffffff; /* 2^64-1 */ | 126 | info->dqi_maxblimit = 0xffffffffffffffffULL; /* 2^64-1 */ |
| 124 | info->dqi_maxilimit = 0xffffffffffffffff; | 127 | info->dqi_maxilimit = 0xffffffffffffffffULL; |
| 125 | } | 128 | } |
| 126 | info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); | 129 | info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); |
| 127 | info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); | 130 | info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); |
