From: Jarek Poplawski <jarkao2@gmail.com>
To: jamal <hadi@cyberus.ca>
Cc: David Miller <davem@davemloft.net>,
pablo@netfilter.org, arthur.marsh@internode.on.net,
jengelh@medozas.de, eric.dumazet@gmail.com,
netdev@vger.kernel.org,
Alessandro Suardi <alessandro.suardi@gmail.com>
Subject: Re: inbound connection problems when "netlink: test for all flags of the NLM_F_DUMP composite" commit applied
Date: Tue, 18 Jan 2011 18:22:54 +0100 [thread overview]
Message-ID: <20110118172254.GA1843@del.dom.local> (raw)
In-Reply-To: <1295359653.2066.11.camel@mojatatu>
On Tue, Jan 18, 2011 at 09:07:33AM -0500, jamal wrote:
> On Tue, 2011-01-18 at 09:05 -0500, jamal wrote:
> > On Tue, 2011-01-18 at 10:24 +0000, Jarek Poplawski wrote:
> >
> > > Do you all expect all users manage to upgrade avahi app before
> > > changing their stable kernel? I mean "own distro" users especially.
> >
> > Unfortunately if that app is widely deployed, it is not pragmatic
> > to break it in the name of pedanticity.
>
> And to complete that thought - if avahi continues to work and merely
> whines, i dont see why this patch should be reverted..
Alas it looks like more than whines ;-)
Cheers,
Jarek P.
[PATCH] netlink: Revert test for all flags of the NLM_F_DUMP composite
Arthur Marsh reported:
> With kernel 2.6.37-git9 and later inbound telnetd-ssl connections
> failed, and on machine shut-down, there were warning messages about
> daemons not return status.
and bisected the bug.
After looking at net/core/rtnetlink.c:
static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
{
...
kind = type&3;
if (kind != 2 && security_netlink_recv(skb, CAP_NET_ADMIN))
return -EPERM;
if (kind == 2 && nlh->nlmsg_flags&NLM_F_DUMP) {
I'm sure the fix in commit 0ab03c2b1478f24 is simply wrong. NLM_F_DUMP
flags can't be mistaken with NLM_F_EXCL if there is a check for GET
request like above (ie. kind == 2). So there is no reason to limit 3
various dump cases from the RFC (not counting the atomic flag) to one
and only NLM_F_DUMP.
That's why I propose this reverting patch here and a separate fix to
genetlink (soon).
Reverts commit 0ab03c2b1478f2438d2c80204f7fef65b1bca9cf
Reported-by: Alessandro Suardi <alessandro.suardi@gmail.com>
Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
Bisected-by: Arthur Marsh <arthur.marsh@internode.on.net>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Cc: Jan Engelhardt <jengelh@medozas.de>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Jamal Hadi Salim <hadi@cyberus.ca>
---
net/core/rtnetlink.c | 2 +-
net/ipv4/inet_diag.c | 2 +-
net/netfilter/nf_conntrack_netlink.c | 4 ++--
net/netlink/genetlink.c | 2 +-
net/xfrm/xfrm_user.c | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index a5f7535..750db57 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1820,7 +1820,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
if (kind != 2 && security_netlink_recv(skb, CAP_NET_ADMIN))
return -EPERM;
- if (kind == 2 && (nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) {
+ if (kind == 2 && nlh->nlmsg_flags&NLM_F_DUMP) {
struct sock *rtnl;
rtnl_dumpit_func dumpit;
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
index 2746c1f..2ada171 100644
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@ -858,7 +858,7 @@ static int inet_diag_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
nlmsg_len(nlh) < hdrlen)
return -EINVAL;
- if ((nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) {
+ if (nlh->nlmsg_flags & NLM_F_DUMP) {
if (nlmsg_attrlen(nlh, hdrlen)) {
struct nlattr *attr;
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index 2b7eef3..93297aa 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -924,7 +924,7 @@ ctnetlink_get_conntrack(struct sock *ctnl, struct sk_buff *skb,
u16 zone;
int err;
- if ((nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP)
+ if (nlh->nlmsg_flags & NLM_F_DUMP)
return netlink_dump_start(ctnl, skb, nlh, ctnetlink_dump_table,
ctnetlink_done);
@@ -1787,7 +1787,7 @@ ctnetlink_get_expect(struct sock *ctnl, struct sk_buff *skb,
u16 zone;
int err;
- if ((nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) {
+ if (nlh->nlmsg_flags & NLM_F_DUMP) {
return netlink_dump_start(ctnl, skb, nlh,
ctnetlink_exp_dump_table,
ctnetlink_exp_done);
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index f83cb37..1781d99 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -519,7 +519,7 @@ static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
security_netlink_recv(skb, CAP_NET_ADMIN))
return -EPERM;
- if ((nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) {
+ if (nlh->nlmsg_flags & NLM_F_DUMP) {
if (ops->dumpit == NULL)
return -EOPNOTSUPP;
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index d5e1e0b..6129196 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -2189,7 +2189,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
if ((type == (XFRM_MSG_GETSA - XFRM_MSG_BASE) ||
type == (XFRM_MSG_GETPOLICY - XFRM_MSG_BASE)) &&
- (nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) {
+ (nlh->nlmsg_flags & NLM_F_DUMP)) {
if (link->dump == NULL)
return -EINVAL;
next prev parent reply other threads:[~2011-01-18 17:23 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-16 8:54 inbound connection problems when "netlink: test for all flags of the NLM_F_DUMP composite" commit applied Arthur Marsh
2011-01-16 9:21 ` Eric Dumazet
2011-01-16 10:50 ` Jan Engelhardt
2011-01-16 12:39 ` Arthur Marsh
[not found] ` <4D32E3BA.5040008@internode.on.net>
2011-01-16 21:17 ` Pablo Neira Ayuso
2011-01-17 1:03 ` Arthur Marsh
2011-01-18 9:38 ` Jarek Poplawski
2011-01-18 10:07 ` David Miller
2011-01-18 10:24 ` Jarek Poplawski
2011-01-18 14:05 ` jamal
2011-01-18 14:07 ` jamal
2011-01-18 17:22 ` Jarek Poplawski [this message]
2011-01-18 18:11 ` Jarek Poplawski
2011-01-18 20:39 ` David Miller
2011-01-18 20:31 ` Pablo Neira Ayuso
2011-01-18 20:50 ` David Miller
2011-01-19 17:42 ` Pablo Neira Ayuso
2011-01-19 21:34 ` David Miller
2011-01-18 20:55 ` Jarek Poplawski
2011-01-19 14:28 ` jamal
2011-01-19 16:54 ` Jarek Poplawski
2011-01-19 16:59 ` jamal
2011-01-19 17:19 ` Jarek Poplawski
2011-01-19 17:33 ` Jarek Poplawski
2011-01-19 18:04 ` Jan Engelhardt
2011-01-19 19:24 ` Jarek Poplawski
2011-01-19 19:47 ` Jan Engelhardt
2011-01-19 20:12 ` Jarek Poplawski
2011-01-18 21:14 ` Jarek Poplawski
2011-01-19 14:53 ` Pablo Neira Ayuso
2011-01-19 16:18 ` Jarek Poplawski
-- strict thread matches above, loose matches on Subject: below --
2011-01-18 17:23 Jarek Poplawski
2011-01-18 18:10 ` Alessandro Suardi
2011-01-18 18:23 ` Jarek Poplawski
2011-01-18 18:24 ` Jan Engelhardt
2011-01-18 18:28 ` Jarek Poplawski
2011-01-18 18:47 ` Jarek Poplawski
2011-01-18 19:26 ` Alessandro Suardi
2011-01-18 20:07 ` Jarek Poplawski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110118172254.GA1843@del.dom.local \
--to=jarkao2@gmail.com \
--cc=alessandro.suardi@gmail.com \
--cc=arthur.marsh@internode.on.net \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=hadi@cyberus.ca \
--cc=jengelh@medozas.de \
--cc=netdev@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).