lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 26 Aug 2020 09:19:51 +0200 From: Johannes Berg <johannes@...solutions.net> To: Dmitry Safonov <dima@...sta.com>, linux-kernel@...r.kernel.org Cc: Dmitry Safonov <0x7f454c46@...il.com>, "David S. Miller" <davem@...emloft.net>, Florian Westphal <fw@...len.de>, Herbert Xu <herbert@...dor.apana.org.au>, Jakub Kicinski <kuba@...nel.org>, Steffen Klassert <steffen.klassert@...unet.com>, Stephen Suryaputra <ssuryaextr@...il.com>, netdev@...r.kernel.org Subject: Re: [PATCH v2 3/6] netlink/compat: Append NLMSG_DONE/extack to frag_list On Wed, 2020-08-26 at 02:49 +0100, Dmitry Safonov wrote: > Modules those use netlink may supply a 2nd skb, (via frag_list) > that contains an alternative data set meant for applications > using 32bit compatibility mode. Do note, however, that until this day the facility here was only used by (and originally intended for) wireless extensions, where it exclusively applies to *event* messages. Hence, we really didn't worry about dump or any other kind of netlink usage. That said, it's really just a historic note explaining why it didn't work for you out of the box :) > In such a case, netlink_recvmsg will use this 2nd skb instead of the > original one. > > Without this patch, such compat applications will retrieve > all netlink dump data, but will then get an unexpected EOF. > > Cc: Johannes Berg <johannes@...solutions.net> > Signed-off-by: Florian Westphal <fw@...len.de> > Signed-off-by: Dmitry Safonov <dima@...sta.com> > --- > net/netlink/af_netlink.c | 48 ++++++++++++++++++++++++++++------------ > 1 file changed, 34 insertions(+), 14 deletions(-) > > diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c > index b5f30d7d30d0..b096f2b4a50d 100644 > --- a/net/netlink/af_netlink.c > +++ b/net/netlink/af_netlink.c > @@ -2186,13 +2186,36 @@ EXPORT_SYMBOL(__nlmsg_put); > * It would be better to create kernel thread. > */ > > +static int netlink_dump_done(struct netlink_sock *nlk, struct sk_buff *skb, > + struct netlink_callback *cb, > + struct netlink_ext_ack *extack) > +{ > + struct nlmsghdr *nlh; > + > + nlh = nlmsg_put_answer(skb, cb, NLMSG_DONE, sizeof(nlk->dump_done_errno), > + NLM_F_MULTI | cb->answer_flags); > + if (WARN_ON(!nlh)) > + return -ENOBUFS; > + > + nl_dump_check_consistent(cb, nlh); > + memcpy(nlmsg_data(nlh), &nlk->dump_done_errno, > + sizeof(nlk->dump_done_errno)); nit: indentation here looks odd. Other than that, looks reasonable to me. Reviewed-by: Johannes Berg <johannes@...solutions.net> johannes
Powered by blists - more mailing lists