]> Pileus Git - ~andy/linux/blobdiff - fs/gfs2/sys.c
Merge tag 'iio-fixes-for-3.9a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23...
[~andy/linux] / fs / gfs2 / sys.c
index 4fb9ad80d2600ac5ac53ddd399ff29ec1cb61f89..aa5c48044966697c2365712ab53a20d7bc5d8958 100644 (file)
@@ -103,7 +103,7 @@ static ssize_t freeze_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
        int n = simple_strtol(buf, NULL, 0);
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        switch (n) {
        case 0:
@@ -133,7 +133,7 @@ static ssize_t withdraw_show(struct gfs2_sbd *sdp, char *buf)
 static ssize_t withdraw_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
 {
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        if (simple_strtol(buf, NULL, 0) != 1)
                return -EINVAL;
@@ -148,7 +148,7 @@ static ssize_t statfs_sync_store(struct gfs2_sbd *sdp, const char *buf,
                                 size_t len)
 {
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        if (simple_strtol(buf, NULL, 0) != 1)
                return -EINVAL;
@@ -161,7 +161,7 @@ static ssize_t quota_sync_store(struct gfs2_sbd *sdp, const char *buf,
                                size_t len)
 {
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        if (simple_strtol(buf, NULL, 0) != 1)
                return -EINVAL;
@@ -173,30 +173,40 @@ static ssize_t quota_sync_store(struct gfs2_sbd *sdp, const char *buf,
 static ssize_t quota_refresh_user_store(struct gfs2_sbd *sdp, const char *buf,
                                        size_t len)
 {
+       struct kqid qid;
        int error;
        u32 id;
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        id = simple_strtoul(buf, NULL, 0);
 
-       error = gfs2_quota_refresh(sdp, 1, id);
+       qid = make_kqid(current_user_ns(), USRQUOTA, id);
+       if (!qid_valid(qid))
+               return -EINVAL;
+
+       error = gfs2_quota_refresh(sdp, qid);
        return error ? error : len;
 }
 
 static ssize_t quota_refresh_group_store(struct gfs2_sbd *sdp, const char *buf,
                                         size_t len)
 {
+       struct kqid qid;
        int error;
        u32 id;
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        id = simple_strtoul(buf, NULL, 0);
 
-       error = gfs2_quota_refresh(sdp, 0, id);
+       qid = make_kqid(current_user_ns(), GRPQUOTA, id);
+       if (!qid_valid(qid))
+               return -EINVAL;
+
+       error = gfs2_quota_refresh(sdp, qid);
        return error ? error : len;
 }
 
@@ -211,7 +221,7 @@ static ssize_t demote_rq_store(struct gfs2_sbd *sdp, const char *buf, size_t len
        int rv;
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        rv = sscanf(buf, "%u:%llu %15s", &gltype, &glnum,
                    mode);
@@ -522,7 +532,7 @@ static ssize_t quota_scale_store(struct gfs2_sbd *sdp, const char *buf,
        unsigned int x, y;
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        if (sscanf(buf, "%u %u", &x, &y) != 2 || !y)
                return -EINVAL;
@@ -541,7 +551,7 @@ static ssize_t tune_set(struct gfs2_sbd *sdp, unsigned int *field,
        unsigned int x;
 
        if (!capable(CAP_SYS_ADMIN))
-               return -EACCES;
+               return -EPERM;
 
        x = simple_strtoul(buf, NULL, 0);