All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Florian Fainelli <f.fainelli@gmail.com>
Cc: netdev@vger.kernel.org, davem@davemlof.net,
	vivien.didelot@savoirfairelinux.com
Subject: Re: [PATCH net-next v2 4/5] net: dsa: Initialize CPU port ethtool ops per tree
Date: Tue, 7 Jun 2016 02:34:01 +0200	[thread overview]
Message-ID: <20160607003401.GP12165@lunn.ch> (raw)
In-Reply-To: <1465254895-11152-5-git-send-email-f.fainelli@gmail.com>

On Mon, Jun 06, 2016 at 04:14:54PM -0700, Florian Fainelli wrote:
> Now that we can properly support multiple distinct trees in the system,
> using a global variable: dsa_cpu_port_ethtool_ops is getting clobbered
> as soon as the second switch tree gets probed, and we don't want that.
> 
> We need to move this to be dynamically allocated, and since we can't
> really be comparing addresses anymore to determine first time
> initialization versus any other times, just move this to dsa.c and
> dsa2.c where the remainder of the dst/ds initialization happens.
> 
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
>  net/dsa/dsa.c      | 28 ++++++++++++++++++++++++++++
>  net/dsa/dsa2.c     |  4 ++++
>  net/dsa/dsa_priv.h |  2 ++
>  net/dsa/slave.c    | 10 ----------
>  4 files changed, 34 insertions(+), 10 deletions(-)
> 
> diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
> index ce3b942dce76..37026f04ee4d 100644
> --- a/net/dsa/dsa.c
> +++ b/net/dsa/dsa.c
> @@ -266,6 +266,30 @@ const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol)
>  	return ops;
>  }
>  
> +int dsa_cpu_port_ethtool_setup(struct dsa_switch_tree *dst,
> +			       struct dsa_switch *ds)
> +{
> +	struct net_device *master;
> +	struct ethtool_ops *cpu_ops;
> +
> +	master = ds->dst->master_netdev;
> +	if (ds->master_netdev)
> +		master = ds->master_netdev;
> +
> +	cpu_ops = devm_kzalloc(ds->dev, sizeof(*cpu_ops), GFP_KERNEL);
> +	if (!cpu_ops)
> +		return -ENOMEM;
> +
> +	memcpy(&dst->master_ethtool_ops, master->ethtool_ops,
> +	       sizeof(struct ethtool_ops));
> +	memcpy(cpu_ops, &dst->master_ethtool_ops,
> +	       sizeof(struct ethtool_ops));
> +	dsa_cpu_port_ethtool_init(cpu_ops);
> +	master->ethtool_ops = cpu_ops;
> +
> +	return 0;
> +}

Hi Florian

Why is there not a symmetrical dsa_cpu_port_ethertool_destroy method,
which will restore master->ethtool_ops when the switch module is
unloaded. I think at the moment, you end up with master->ethtool_ops
pointing at released memory.

	 Andrew

  reply	other threads:[~2016-06-07  0:34 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-06 23:14 [PATCH net-next v2 0/5] net: dsa: misc improvements Florian Fainelli
2016-06-06 23:14 ` [PATCH net-next v2 1/5] net: dsa: Provide unique DSA slave MII bus names Florian Fainelli
2016-06-06 23:14 ` [PATCH net-next v2 2/5] net: dsa: Initialize ds->enabled_port_mask and ds->phys_mii_mask Florian Fainelli
2016-06-07  0:22   ` Andrew Lunn
2016-06-07 13:05     ` Andrew Lunn
2016-06-06 23:14 ` [PATCH net-next v2 3/5] net: dsa: Add initialization helper for CPU port ethtool_ops Florian Fainelli
2016-06-07 13:05   ` Vivien Didelot
2016-06-06 23:14 ` [PATCH net-next v2 4/5] net: dsa: Initialize CPU port ethtool ops per tree Florian Fainelli
2016-06-07  0:34   ` Andrew Lunn [this message]
2016-06-06 23:14 ` [PATCH net-next v2 5/5] net: dsa: bcm_sf2: Register our slave MDIO bus Florian Fainelli
2016-06-07  0:39   ` Andrew Lunn
2016-06-07 13:23   ` Vivien Didelot
2016-06-07 14:46   ` Vivien Didelot
2016-06-07 16:48     ` Vivien Didelot
2016-06-07 17:00       ` Andrew Lunn
2016-06-07 17:33         ` Vivien Didelot
2016-06-07 18:44           ` Andrew Lunn
2016-06-07 19:11             ` Vivien Didelot
2016-06-07 19:29               ` Florian Fainelli

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=20160607003401.GP12165@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=davem@davemlof.net \
    --cc=f.fainelli@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=vivien.didelot@savoirfairelinux.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.