From: Hajime Tazaki <thehajime@gmail.com>
To: ek@google.com
Cc: hideaki.yoshifuji@miraclelinux.com, davem@davemloft.net,
netdev@vger.kernel.org, hannes@stressinduktion.org,
lorenzo@google.com
Subject: Re: [PATCH net-next v2] ipv6: Do not iterate over all interfaces when finding source address on specific interface.
Date: Mon, 13 Jul 2015 19:55:43 +0900 [thread overview]
Message-ID: <m2h9p85ntc.wl@gmail.com> (raw)
In-Reply-To: <CAAedzxp8RAn3VZVZmWA_vLMspEyt_-nWe3RBKXWfsUoFRz97Hg@mail.gmail.com>
Yoshifuji-san,
At Mon, 13 Jul 2015 17:38:48 +0900,
Erik Kline wrote:
>
> On 13 July 2015 at 15:32, YOSHIFUJI Hideaki
> <hideaki.yoshifuji@miraclelinux.com> wrote:
> > Hi,
> >
> > Erik Kline wrote:
> >> Hmm, when I run a UML linux with this patch (which, I'm ashamed to
> >> say, I failed to do before) I get these kinds of errors:
> >>
> >> unregister_netdevice: waiting for <TAPdevice> to become free.
> >> Usage count = 1
> >> unregister_netdevice: waiting for <TAPdevice> to become free.
> >> Usage count = 1
> >>
> >> Perhaps they're unrelated... I'm still investigating.
> >
> > Would you test attached patch please?
>
> That does look logically correct, so +1 to it regardless, but it does
> not seem to have fixed the issue I'm seeing.
>
> I still haven't produced the smallest possible demo test program.
sorry to jump-in, but there is a side-effect with this
patch, which my tcp and dccp tests (ipv6) are failed.
because newly added function (__ipv6_dev_get_saddr) won't
update a variable 'hiscore' (it swaps with 'score' in some
case), the caller (ipv6_dev_get_saddr) can't fill an
appropriate saddr in the end.
I don't know if this is a good patch but the following diff
makes my test happy.
-- Hajime
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 4ab74d5..c4e9416 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1363,7 +1363,8 @@ static void __ipv6_dev_get_saddr(struct net *net,
unsigned int prefs,
const struct in6_addr *saddr,
struct inet6_dev *idev,
- struct ipv6_saddr_score *scores)
+ struct ipv6_saddr_score *scores,
+ struct ipv6_saddr_score **in_hiscore)
{
struct ipv6_saddr_score *score = &scores[0], *hiscore = &scores[1];
@@ -1424,6 +1425,7 @@ static void __ipv6_dev_get_saddr(struct net *net,
in6_ifa_hold(score->ifa);
swap(hiscore, score);
+ *in_hiscore = hiscore;
/* restore our iterator */
score->ifa = hiscore->ifa;
@@ -1480,13 +1482,15 @@ int ipv6_dev_get_saddr(struct net *net, const struct net_device *dst_dev,
}
if (use_oif_addr) {
- __ipv6_dev_get_saddr(net, &dst, prefs, saddr, idev, scores);
+ __ipv6_dev_get_saddr(net, &dst, prefs, saddr, idev,
+ scores, &hiscore);
} else {
for_each_netdev_rcu(net, dev) {
idev = __in6_dev_get(dev);
if (!idev)
continue;
- __ipv6_dev_get_saddr(net, &dst, prefs, saddr, idev, scores);
+ __ipv6_dev_get_saddr(net, &dst, prefs, saddr, idev,
+ scores, &hiscore);
}
}
rcu_read_unlock();
next prev parent reply other threads:[~2015-07-13 10:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-10 7:58 [PATCH net-next v2] ipv6: Do not iterate over all interfaces when finding source address on specific interface YOSHIFUJI Hideaki/吉藤英明
2015-07-11 6:19 ` David Miller
2015-07-11 9:21 ` Erik Kline
2015-07-13 6:32 ` YOSHIFUJI Hideaki
2015-07-13 8:38 ` Erik Kline
2015-07-13 10:55 ` Hajime Tazaki [this message]
2015-07-13 13:49 ` YOSHIFUJI Hideaki
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=m2h9p85ntc.wl@gmail.com \
--to=thehajime@gmail.com \
--cc=davem@davemloft.net \
--cc=ek@google.com \
--cc=hannes@stressinduktion.org \
--cc=hideaki.yoshifuji@miraclelinux.com \
--cc=lorenzo@google.com \
--cc=netdev@vger.kernel.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).