netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	David Daney <david.daney@cavium.com>
Cc: andrew@lunn.ch, hkallweit1@gmail.com, davem@davemloft.net,
	kuba@kernel.org, david.daney@cavium.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [PATCH] net: mdio: thunder: Do not unregister buses that have not been registered
Date: Thu, 13 May 2021 13:16:34 +0100	[thread overview]
Message-ID: <20210513121634.GX1336@shell.armlinux.org.uk> (raw)
In-Reply-To: <918382e19fdeb172f3836234d07e706460b7d06b.1620906605.git.christophe.jaillet@wanadoo.fr>

On Thu, May 13, 2021 at 01:51:40PM +0200, Christophe JAILLET wrote:
> In the probe, if 'of_mdiobus_register()' fails, 'nexus->buses[i]' will
> still have a non-NULL value.
> So in the remove function, we will try to unregister a bus that has not
> been registered.
> 
> In order to avoid that NULLify 'nexus->buses[i]'.
> 'oct_mdio_writeq(0,...)' must also be called here.
> 
> Suggested-by: Russell King - ARM Linux admin <linux@armlinux.org.uk>
> Fixes: 379d7ac7ca31 ("phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses.")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> Calling 'devm_mdiobus_free()' would also be cleaner, IMHO.
> I've not added it because:
>    - it should be fine, even without it
>    - I'm not sure how to use it

devm_mdiobus_free() is a static function not intended to be used by
drivers. There is no devm.*free() function available for this, so
this memory will only ever be freed when either probe fails or the
driver is unbound from its device.

That should be fine, but it would be nice to give that memory back
to the system. Without having a function for drivers to use though,
that's not possible. Such a function should take a struct device
pointer and the struct mii_bus pointer returned by the devm
allocation function.

So, unless Andrew things we really need to free that, what you're
doing below should be fine as far as setting the pointer to NULL.

I think I'd want comments from Cavium on setting the register to
zero - as we don't know how this hardware behaves, and whether that
would have implications we aren't aware of. So, I'm copying in
David Daney (the original driver author) for comment, if his email
address still works!

> ---
>  drivers/net/mdio/mdio-thunder.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mdio/mdio-thunder.c b/drivers/net/mdio/mdio-thunder.c
> index 822d2cdd2f35..140c405d4a41 100644
> --- a/drivers/net/mdio/mdio-thunder.c
> +++ b/drivers/net/mdio/mdio-thunder.c
> @@ -97,8 +97,14 @@ static int thunder_mdiobus_pci_probe(struct pci_dev *pdev,
>  		bus->mii_bus->write = cavium_mdiobus_write;
>  
>  		err = of_mdiobus_register(bus->mii_bus, node);
> -		if (err)
> +		if (err) {
>  			dev_err(&pdev->dev, "of_mdiobus_register failed\n");
> +			/* non-registered buses must not be unregistered in
> +			 * the .remove function
> +			 */
> +			oct_mdio_writeq(0, bus->register_base + SMI_EN);
> +			nexus->buses[i] = NULL;
> +		}
>  
>  		dev_info(&pdev->dev, "Added bus at %llx\n", r.start);
>  		if (i >= ARRAY_SIZE(nexus->buses))
> -- 
> 2.30.2
> 
> 

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2021-05-13 12:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-13 11:51 [PATCH] net: mdio: thunder: Do not unregister buses that have not been registered Christophe JAILLET
2021-05-13 12:16 ` Russell King - ARM Linux admin [this message]
2023-02-16  6:45   ` Christophe JAILLET

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=20210513121634.GX1336@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=andrew@lunn.ch \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=davem@davemloft.net \
    --cc=david.daney@cavium.com \
    --cc=hkallweit1@gmail.com \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --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).