From: Vlad Yasevich <vyasevich@gmail.com>
To: Alexander Fomichev <git.user@gmail.com>, netdev@vger.kernel.org
Cc: David Miller <davem@davemloft.net>,
Cong Wang <cwang@twopensource.com>,
Vlad Yasevich <vyasevic@redhat.com>,
Andres Freund <andres@anarazel.de>
Subject: Re: [PATCH net] net: fix sysfs symlinks of adjacent devices
Date: Fri, 12 Sep 2014 09:33:39 -0400 [thread overview]
Message-ID: <5412F633.8020102@gmail.com> (raw)
In-Reply-To: <1410516826-6926-1-git-send-email-git.user@gmail.com>
On 09/12/2014 06:13 AM, Alexander Fomichev wrote:
> From: "Alexander Y. Fomichev" <git.user@gmail.com>
>
> __netdev_adjacent_dev_insert may add adjacent device from another
> namespace. Without proper check it leads to emergence of broken
> symlink from/to device not existing in current namespace.
> Fix: check net_ns is the same before netdev_adjacent_sysfs_add/del
> related to: 4c75431ac3520631f1d9e74aa88407e6374dbbc4
>
> Signed-off-by: Alexander Y. Fomichev <git.user@gmail.com>
> ---
> net/core/dev.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/net/core/dev.c b/net/core/dev.c
> index ab9a16530c36..887784b2dcde 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -4841,7 +4841,8 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
> pr_debug("dev_hold for %s, because of link added from %s to %s\n",
> adj_dev->name, dev->name, adj_dev->name);
>
> - if (netdev_adjacent_is_neigh_list(dev, dev_list)) {
> + if (netdev_adjacent_is_neigh_list(dev, dev_list) &&
> + net_eq(dev_net(dev), dev_net(adj_dev))) {
> ret = netdev_adjacent_sysfs_add(dev, adj_dev, dev_list);
> if (ret)
> goto free_adj;
> @@ -4862,7 +4863,8 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
> return 0;
>
> remove_symlinks:
> - if (netdev_adjacent_is_neigh_list(dev, dev_list))
> + if (netdev_adjacent_is_neigh_list(dev, dev_list) &&
> + net_eq(dev_net(dev), dev_net(adj_dev)))
> netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list);
> free_adj:
> kfree(adj);
>
Looking over the code, it might make sense to move all the net_eq checks
into adjacent_sysfs calls so as to consolidate them. I haven't audited
all code paths, but at first glance it should do the right thing.
What do you think?
-vlad
next prev parent reply other threads:[~2014-09-12 13:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-12 10:13 [PATCH net] net: fix sysfs symlinks of adjacent devices Alexander Fomichev
2014-09-12 13:33 ` Vlad Yasevich [this message]
2014-09-14 21:45 ` David Miller
2014-09-15 10:18 ` Alexander Y. Fomichev
2014-09-15 10:22 ` [PATCH net] net: fix creation adjacent device symlinks Alexander Fomichev
2014-09-15 18:25 ` David Miller
2014-09-19 8:59 ` [PATCH net] net: fix sysfs symlinks of adjacent devices Andres Freund
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=5412F633.8020102@gmail.com \
--to=vyasevich@gmail.com \
--cc=andres@anarazel.de \
--cc=cwang@twopensource.com \
--cc=davem@davemloft.net \
--cc=git.user@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=vyasevic@redhat.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.