On Tue 26-04-16 10:06:13, Nicolas Dichtel wrote: > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@xxxxxxxxx> OK, so I somewhat miss a description of what will this do to the netlink message so that I can judge whether the change is fine for the userspace counterpart parsing these messages. AFAIU this changes the message format by adding a QUOTA_NL_A_PAD field before each 64-bit field which needs an alignment, am I guessing right? Thus when the userspace counterpart uses genlmsg_parse() it should just silently ignore these attributes if I read the documentation right. Did I understand this correctly? Honza > --- > fs/quota/netlink.c | 12 +++++++----- > include/uapi/linux/quota.h | 1 + > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c > index d07a2f91d858..8b252673d454 100644 > --- a/fs/quota/netlink.c > +++ b/fs/quota/netlink.c > @@ -47,7 +47,7 @@ void quota_send_warning(struct kqid qid, dev_t dev, > void *msg_head; > int ret; > int msg_size = 4 * nla_total_size(sizeof(u32)) + > - 2 * nla_total_size(sizeof(u64)); > + 2 * nla_total_size_64bit(sizeof(u64)); > > /* We have to allocate using GFP_NOFS as we are called from a > * filesystem performing write and thus further recursion into > @@ -68,8 +68,9 @@ void quota_send_warning(struct kqid qid, dev_t dev, > ret = nla_put_u32(skb, QUOTA_NL_A_QTYPE, qid.type); > if (ret) > goto attr_err_out; > - ret = nla_put_u64(skb, QUOTA_NL_A_EXCESS_ID, > - from_kqid_munged(&init_user_ns, qid)); > + ret = nla_put_u64_64bit(skb, QUOTA_NL_A_EXCESS_ID, > + from_kqid_munged(&init_user_ns, qid), > + QUOTA_NL_A_PAD); > if (ret) > goto attr_err_out; > ret = nla_put_u32(skb, QUOTA_NL_A_WARNING, warntype); > @@ -81,8 +82,9 @@ void quota_send_warning(struct kqid qid, dev_t dev, > ret = nla_put_u32(skb, QUOTA_NL_A_DEV_MINOR, MINOR(dev)); > if (ret) > goto attr_err_out; > - ret = nla_put_u64(skb, QUOTA_NL_A_CAUSED_ID, > - from_kuid_munged(&init_user_ns, current_uid())); > + ret = nla_put_u64_64bit(skb, QUOTA_NL_A_CAUSED_ID, > + from_kuid_munged(&init_user_ns, current_uid()), > + QUOTA_NL_A_PAD); > if (ret) > goto attr_err_out; > genlmsg_end(skb, msg_head); > diff --git a/include/uapi/linux/quota.h b/include/uapi/linux/quota.h > index 38baddb807f5..4d2489ef6f10 100644 > --- a/include/uapi/linux/quota.h > +++ b/include/uapi/linux/quota.h > @@ -191,6 +191,7 @@ enum { > QUOTA_NL_A_DEV_MAJOR, > QUOTA_NL_A_DEV_MINOR, > QUOTA_NL_A_CAUSED_ID, > + QUOTA_NL_A_PAD, > __QUOTA_NL_A_MAX, > }; > #define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1) > -- > 2.8.1 > > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html