From: Florian Westphal <fw-kernel@strlen.de>
To: "Stephens, Allan" <allan.stephens@windriver.com>
Cc: Patrick McHardy <kaber@trash.net>,
jon.maloy@ericsson.com, netdev@vger.kernel.org,
per.liden@ericsson.com
Subject: Re: [PATCH] TIPC: Fix infinite loop in netlink handler
Date: Wed, 20 Jun 2007 18:12:08 +0200 [thread overview]
Message-ID: <20070620161208.GI4383@Chamillionaire.breakpoint.cc> (raw)
In-Reply-To: <AF1602CB2550CE4381C0C75118A7856B0135AC94@ala-mail02.corp.ad.wrs.com>
Stephens, Allan <allan.stephens@windriver.com> wrote:
[removed tipc-discussion list from CC]
> Patrick McHardy wrote:
> > Florian Westphal wrote:
> > > - genlmsg_unicast(rep_buf, req_nlh->nlmsg_pid);
> > > + genlmsg_unicast(rep_buf, NETLINK_CB(skb).pid);
> >
> >
> > This is the second time we're seeing this bug within a few
> > weeks, maybe we should rename NETLINK_CB(skb).pid to dst_pid
> > to avoid similar confusion in the future? We could even
> > rename nlmsg_pid to nlmsg_src within the kernel, which should
> > make it completely clear what is being refered to.
>
> I'm assuming that Patrick's first suggestion should have read "rename
> NETLINK_CB(skb).pid to src_pid", as there is already a "dst_pid" field
> in the netlink_skb_parms structure type.
Hmm, this dst_pid got removed in commit
4e9b82693542003b028c8494e9e3c49615b91ce7.
And im actually not sure if a rename would really help things.
The problem was/is the usage of the original header value (which works just
fine if userspace plays along). So the only real solution
would be to update the nlmsg_pid value to the NETLINK_CB(skb).pid if
it is 0 before the 'doit' callback in genl_rcv_msg() -- and this seems
just the wrong thing to to. Plus, there is a snd_seq field in the info
structure passed to the callback which always has the NETLINK_CB(skb).pid.
Perhaps something like the following would be a start?
./include/linux/netlink.h:
- __u32 nlmsg_pid; /* Sending process port ID */
+ __u32 nlmsg_pid; /* Sending process port ID -
+ must not be used as destination parameter with
+ genlmsg_unicast() and friends as it might be 0 meaning 'send to kernel' */
Thoughts?
prev parent reply other threads:[~2007-06-20 16:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-19 20:18 [PATCH] TIPC: Fix infinite loop in netlink handler Florian Westphal
2007-06-19 21:32 ` Patrick McHardy
2007-06-20 14:13 ` Stephens, Allan
2007-06-20 16:12 ` Florian Westphal [this message]
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=20070620161208.GI4383@Chamillionaire.breakpoint.cc \
--to=fw-kernel@strlen.de \
--cc=allan.stephens@windriver.com \
--cc=jon.maloy@ericsson.com \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
--cc=per.liden@ericsson.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.