diff options
-rw-r--r-- | fs/gfs2/quota.c | 12 | ||||
-rw-r--r-- | fs/quota/dquot.c | 2 | ||||
-rw-r--r-- | fs/quota/netlink.c | 10 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_dquot.c | 8 | ||||
-rw-r--r-- | include/linux/quota.h | 4 | ||||
-rw-r--r-- | init/Kconfig | 1 |
6 files changed, 22 insertions, 15 deletions
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index b3115392d68f..d554dfff58e3 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c | |||
@@ -1070,8 +1070,10 @@ int gfs2_quota_check(struct gfs2_inode *ip, u32 uid, u32 gid) | |||
1070 | 1070 | ||
1071 | if (be64_to_cpu(qd->qd_qb.qb_limit) && (s64)be64_to_cpu(qd->qd_qb.qb_limit) < value) { | 1071 | if (be64_to_cpu(qd->qd_qb.qb_limit) && (s64)be64_to_cpu(qd->qd_qb.qb_limit) < value) { |
1072 | print_message(qd, "exceeded"); | 1072 | print_message(qd, "exceeded"); |
1073 | quota_send_warning(test_bit(QDF_USER, &qd->qd_flags) ? | 1073 | quota_send_warning(make_kqid(&init_user_ns, |
1074 | USRQUOTA : GRPQUOTA, qd->qd_id, | 1074 | test_bit(QDF_USER, &qd->qd_flags) ? |
1075 | USRQUOTA : GRPQUOTA, | ||
1076 | qd->qd_id), | ||
1075 | sdp->sd_vfs->s_dev, QUOTA_NL_BHARDWARN); | 1077 | sdp->sd_vfs->s_dev, QUOTA_NL_BHARDWARN); |
1076 | 1078 | ||
1077 | error = -EDQUOT; | 1079 | error = -EDQUOT; |
@@ -1081,8 +1083,10 @@ int gfs2_quota_check(struct gfs2_inode *ip, u32 uid, u32 gid) | |||
1081 | time_after_eq(jiffies, qd->qd_last_warn + | 1083 | time_after_eq(jiffies, qd->qd_last_warn + |
1082 | gfs2_tune_get(sdp, | 1084 | gfs2_tune_get(sdp, |
1083 | gt_quota_warn_period) * HZ)) { | 1085 | gt_quota_warn_period) * HZ)) { |
1084 | quota_send_warning(test_bit(QDF_USER, &qd->qd_flags) ? | 1086 | quota_send_warning(make_kqid(&init_user_ns, |
1085 | USRQUOTA : GRPQUOTA, qd->qd_id, | 1087 | test_bit(QDF_USER, &qd->qd_flags) ? |
1088 | USRQUOTA : GRPQUOTA, | ||
1089 | qd->qd_id), | ||
1086 | sdp->sd_vfs->s_dev, QUOTA_NL_BSOFTWARN); | 1090 | sdp->sd_vfs->s_dev, QUOTA_NL_BSOFTWARN); |
1087 | error = print_message(qd, "warning"); | 1091 | error = print_message(qd, "warning"); |
1088 | qd->qd_last_warn = jiffies; | 1092 | qd->qd_last_warn = jiffies; |
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index 7714b169d646..80d337822462 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c | |||
@@ -1236,7 +1236,7 @@ static void flush_warnings(struct dquot_warn *warn) | |||
1236 | #ifdef CONFIG_PRINT_QUOTA_WARNING | 1236 | #ifdef CONFIG_PRINT_QUOTA_WARNING |
1237 | print_warning(&warn[i]); | 1237 | print_warning(&warn[i]); |
1238 | #endif | 1238 | #endif |
1239 | quota_send_warning(warn[i].w_dq_type, warn[i].w_dq_id, | 1239 | quota_send_warning(make_kqid(&init_user_ns, warn[i].w_dq_type, warn[i].w_dq_id), |
1240 | warn[i].w_sb->s_dev, warn[i].w_type); | 1240 | warn[i].w_sb->s_dev, warn[i].w_type); |
1241 | } | 1241 | } |
1242 | } | 1242 | } |
diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c index d67908b407d9..16e8abb7709b 100644 --- a/fs/quota/netlink.c +++ b/fs/quota/netlink.c | |||
@@ -30,7 +30,7 @@ static struct genl_family quota_genl_family = { | |||
30 | * | 30 | * |
31 | */ | 31 | */ |
32 | 32 | ||
33 | void quota_send_warning(short type, unsigned int id, dev_t dev, | 33 | void quota_send_warning(struct kqid qid, dev_t dev, |
34 | const char warntype) | 34 | const char warntype) |
35 | { | 35 | { |
36 | static atomic_t seq; | 36 | static atomic_t seq; |
@@ -56,10 +56,11 @@ void quota_send_warning(short type, unsigned int id, dev_t dev, | |||
56 | "VFS: Cannot store netlink header in quota warning.\n"); | 56 | "VFS: Cannot store netlink header in quota warning.\n"); |
57 | goto err_out; | 57 | goto err_out; |
58 | } | 58 | } |
59 | ret = nla_put_u32(skb, QUOTA_NL_A_QTYPE, type); | 59 | ret = nla_put_u32(skb, QUOTA_NL_A_QTYPE, qid.type); |
60 | if (ret) | 60 | if (ret) |
61 | goto attr_err_out; | 61 | goto attr_err_out; |
62 | ret = nla_put_u64(skb, QUOTA_NL_A_EXCESS_ID, id); | 62 | ret = nla_put_u64(skb, QUOTA_NL_A_EXCESS_ID, |
63 | from_kqid_munged(&init_user_ns, qid)); | ||
63 | if (ret) | 64 | if (ret) |
64 | goto attr_err_out; | 65 | goto attr_err_out; |
65 | ret = nla_put_u32(skb, QUOTA_NL_A_WARNING, warntype); | 66 | ret = nla_put_u32(skb, QUOTA_NL_A_WARNING, warntype); |
@@ -71,7 +72,8 @@ void quota_send_warning(short type, unsigned int id, dev_t dev, | |||
71 | ret = nla_put_u32(skb, QUOTA_NL_A_DEV_MINOR, MINOR(dev)); | 72 | ret = nla_put_u32(skb, QUOTA_NL_A_DEV_MINOR, MINOR(dev)); |
72 | if (ret) | 73 | if (ret) |
73 | goto attr_err_out; | 74 | goto attr_err_out; |
74 | ret = nla_put_u64(skb, QUOTA_NL_A_CAUSED_ID, current_uid()); | 75 | ret = nla_put_u64(skb, QUOTA_NL_A_CAUSED_ID, |
76 | from_kuid_munged(&init_user_ns, current_uid())); | ||
75 | if (ret) | 77 | if (ret) |
76 | goto attr_err_out; | 78 | goto attr_err_out; |
77 | genlmsg_end(skb, msg_head); | 79 | genlmsg_end(skb, msg_head); |
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index bcb60542fcf1..0c7fa54f309e 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c | |||
@@ -578,9 +578,11 @@ xfs_quota_warn( | |||
578 | /* no warnings for project quotas - we just return ENOSPC later */ | 578 | /* no warnings for project quotas - we just return ENOSPC later */ |
579 | if (dqp->dq_flags & XFS_DQ_PROJ) | 579 | if (dqp->dq_flags & XFS_DQ_PROJ) |
580 | return; | 580 | return; |
581 | quota_send_warning((dqp->dq_flags & XFS_DQ_USER) ? USRQUOTA : GRPQUOTA, | 581 | quota_send_warning(make_kqid(&init_user_ns, |
582 | be32_to_cpu(dqp->q_core.d_id), mp->m_super->s_dev, | 582 | (dqp->dq_flags & XFS_DQ_USER) ? |
583 | type); | 583 | USRQUOTA : GRPQUOTA, |
584 | be32_to_cpu(dqp->q_core.d_id)), | ||
585 | mp->m_super->s_dev, type); | ||
584 | } | 586 | } |
585 | 587 | ||
586 | /* | 588 | /* |
diff --git a/include/linux/quota.h b/include/linux/quota.h index f96427a949b2..8b2760427252 100644 --- a/include/linux/quota.h +++ b/include/linux/quota.h | |||
@@ -511,10 +511,10 @@ static inline unsigned int dquot_generic_flag(unsigned int flags, int type) | |||
511 | } | 511 | } |
512 | 512 | ||
513 | #ifdef CONFIG_QUOTA_NETLINK_INTERFACE | 513 | #ifdef CONFIG_QUOTA_NETLINK_INTERFACE |
514 | extern void quota_send_warning(short type, unsigned int id, dev_t dev, | 514 | extern void quota_send_warning(struct kqid qid, dev_t dev, |
515 | const char warntype); | 515 | const char warntype); |
516 | #else | 516 | #else |
517 | static inline void quota_send_warning(short type, unsigned int id, dev_t dev, | 517 | static inline void quota_send_warning(struct kqid qid, dev_t dev, |
518 | const char warntype) | 518 | const char warntype) |
519 | { | 519 | { |
520 | return; | 520 | return; |
diff --git a/init/Kconfig b/init/Kconfig index 15bb1dcdebef..9c8aa8c49443 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -928,7 +928,6 @@ config UIDGID_CONVERTED | |||
928 | depends on IMA = n | 928 | depends on IMA = n |
929 | depends on EVM = n | 929 | depends on EVM = n |
930 | depends on QUOTA = n | 930 | depends on QUOTA = n |
931 | depends on QUOTA_NETLINK_INTERFACE = n | ||
932 | 931 | ||
933 | # Networking | 932 | # Networking |
934 | depends on NET_9P = n | 933 | depends on NET_9P = n |