aboutsummaryrefslogtreecommitdiffstats
path: root/fs/quota/quota.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/quota/quota.c')
-rw-r--r--fs/quota/quota.c14
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
281static 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 */
282static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id, 293static 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: