diff options
Diffstat (limited to 'fs/quota/quota.c')
-rw-r--r-- | fs/quota/quota.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/quota/quota.c b/fs/quota/quota.c index 2b363e23f36e..ff3f0b3cfdb3 100644 --- a/fs/quota/quota.c +++ b/fs/quota/quota.c | |||
@@ -278,6 +278,17 @@ static int quota_getxquota(struct super_block *sb, int type, qid_t id, | |||
278 | return ret; | 278 | return ret; |
279 | } | 279 | } |
280 | 280 | ||
281 | static int quota_rmxquota(struct super_block *sb, void __user *addr) | ||
282 | { | ||
283 | __u32 flags; | ||
284 | |||
285 | if (copy_from_user(&flags, addr, sizeof(flags))) | ||
286 | return -EFAULT; | ||
287 | if (!sb->s_qcop->rm_xquota) | ||
288 | return -ENOSYS; | ||
289 | return sb->s_qcop->rm_xquota(sb, flags); | ||
290 | } | ||
291 | |||
281 | /* Copy parameters and call proper function */ | 292 | /* Copy parameters and call proper function */ |
282 | static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id, | 293 | static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id, |
283 | void __user *addr, struct path *path) | 294 | void __user *addr, struct path *path) |
@@ -316,8 +327,9 @@ static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id, | |||
316 | return sb->s_qcop->quota_sync(sb, type); | 327 | return sb->s_qcop->quota_sync(sb, type); |
317 | case Q_XQUOTAON: | 328 | case Q_XQUOTAON: |
318 | case Q_XQUOTAOFF: | 329 | case Q_XQUOTAOFF: |
319 | case Q_XQUOTARM: | ||
320 | return quota_setxstate(sb, cmd, addr); | 330 | return quota_setxstate(sb, cmd, addr); |
331 | case Q_XQUOTARM: | ||
332 | return quota_rmxquota(sb, addr); | ||
321 | case Q_XGETQSTAT: | 333 | case Q_XGETQSTAT: |
322 | return quota_getxstate(sb, addr); | 334 | return quota_getxstate(sb, addr); |
323 | case Q_XGETQSTATV: | 335 | case Q_XGETQSTATV: |