From: Wei Fang <wei.fang@nxp.com>
To: Claudiu Manoil <claudiu.manoil@nxp.com>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
Clark Wang <xiaoning.wang@nxp.com>,
"andrew+netdev@lunn.ch" <andrew+netdev@lunn.ch>,
"davem@davemloft.net" <davem@davemloft.net>,
"edumazet@google.com" <edumazet@google.com>,
"kuba@kernel.org" <kuba@kernel.org>,
"pabeni@redhat.com" <pabeni@redhat.com>,
"robh@kernel.org" <robh@kernel.org>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"f.fainelli@gmail.com" <f.fainelli@gmail.com>,
Frank Li <frank.li@nxp.com>,
"chleroy@kernel.org" <chleroy@kernel.org>,
"horms@kernel.org" <horms@kernel.org>,
"linux@armlinux.org.uk" <linux@armlinux.org.uk>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"imx@lists.linux.dev" <imx@lists.linux.dev>
Subject: RE: [PATCH v5 net-next 10/15] net: dsa: netc: introduce NXP NETC switch driver for i.MX94
Date: Wed, 6 May 2026 08:03:34 +0000 [thread overview]
Message-ID: <DBBPR04MB750039D8341BBD56061E44FC883F2@DBBPR04MB7500.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20260430024945.3413973-11-wei.fang@nxp.com>
There are some comments from Sashiko, and see my response inline.
> +static int netc_init_all_ports(struct netc_switch *priv)
> +{
> + struct device *dev = priv->dev;
> + struct netc_port *np;
> + struct dsa_port *dp;
> + int err;
> +
> + priv->ports = devm_kcalloc(dev, priv->info->num_ports,
> + sizeof(struct netc_port *),
> + GFP_KERNEL);
> + if (!priv->ports)
> + return -ENOMEM;
> +
> + /* Some DSA interfaces may set the port even it is disabled, such
> + * as .port_disable(), .port_stp_state_set() and so on. To avoid
> + * crash caused by accessing NULL port pointer, each port is
> + * allocated its own memory. Otherwise, we need to check whether
> + * the port pointer is NULL in these interfaces. The latter is
> + * difficult for us to cover.
> + */
> + for (int i = 0; i < priv->info->num_ports; i++) {
> + np = devm_kzalloc(dev, sizeof(*np), GFP_KERNEL);
These devm_* allocations are tied to the PCI device (dev), but happen in a
call chain invoked by the DSA setup() callback:
netc_setup()
netc_init_all_ports()
devm_kcalloc(...)
devm_kzalloc(...)
netc_port_create_mdio_bus()
netc_port_create_emdio_bus()
devm_mdiobus_alloc_size(...)
devm_of_mdiobus_register(...)
Because the DSA setup() and teardown() callbacks can execute multiple times
over the device's lifetime (e.g., when the DSA conduit interface is unbound
and rebound), these devm_* allocations won't be freed during teardown().
Will this cause memory leaks and MDIO bus registration failures due to sysfs
collisions on subsequent setup() calls?
I checked the DSA core driver with Cody help, the .teardown() is only called
when .setup() fails or the switch device is removed. So .setup() and .teardown()
are not called multiple time over the switch's lifetime, this should be a false
positive.
[ ... ]
> +static int netc_switch_pci_init(struct pci_dev *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct netc_switch_regs *regs;
> + struct netc_switch *priv;
> + void __iomem *base;
> + int err;
> +
> + pcie_flr(pdev);
Will this pcie_flr() call wipe the PCI configuration space and BARs?
Since pcie_flr() is called without first saving and later restoring the state
with pci_save_state() and pci_restore_state(), the BARs might remain zeroed.
Could subsequent calls to pcim_iomap() and MMIO accesses then fail to decode
at the hardware level, resulting in target aborts?
This is a false positive, the pcie_flr() is called when initializing the switch
to clear the configuration from U-boot or the last binding.
next prev parent reply other threads:[~2026-05-06 8:03 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-30 2:49 [PATCH v5 net-next 00/15] Add preliminary NETC switch support for i.MX94 Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 01/15] dt-bindings: net: dsa: update the description of 'dsa,member' property Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 02/15] dt-bindings: net: dsa: add NETC switch Wei Fang
2026-05-06 22:22 ` Rob Herring (Arm)
2026-04-30 2:49 ` [PATCH v5 net-next 03/15] net: enetc: add pre-boot initialization for i.MX94 switch Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 04/15] net: enetc: add basic operations to the FDB table Wei Fang
2026-05-05 8:59 ` Paolo Abeni
2026-05-06 6:37 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 05/15] net: enetc: add support for the "Add" operation to VLAN filter table Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 06/15] net: enetc: add support for the "Update" operation to buffer pool table Wei Fang
2026-05-06 7:21 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 07/15] net: enetc: add support for "Add" and "Delete" operations to IPFT Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 08/15] net: enetc: add multiple command BD rings support Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 09/15] net: dsa: add NETC switch tag support Wei Fang
2026-05-06 7:34 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 10/15] net: dsa: netc: introduce NXP NETC switch driver for i.MX94 Wei Fang
2026-05-06 8:03 ` Wei Fang [this message]
2026-04-30 2:49 ` [PATCH v5 net-next 11/15] net: dsa: netc: add phylink MAC operations Wei Fang
2026-05-06 8:20 ` Wei Fang
2026-05-07 12:44 ` Maxime Chevallier
2026-04-30 2:49 ` [PATCH v5 net-next 12/15] net: dsa: netc: add FDB, STP, MTU, port setup and host flooding support Wei Fang
2026-05-07 2:08 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 13/15] net: dsa: netc: initialize buffer pool table and implement flow-control Wei Fang
2026-05-07 2:27 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 14/15] net: dsa: netc: add support for the standardized counters Wei Fang
2026-05-07 2:41 ` Wei Fang
2026-04-30 2:49 ` [PATCH v5 net-next 15/15] net: dsa: netc: add support for ethtool private statistics Wei Fang
2026-05-05 9:43 ` Paolo Abeni
2026-05-06 7:06 ` Wei Fang
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=DBBPR04MB750039D8341BBD56061E44FC883F2@DBBPR04MB7500.eurprd04.prod.outlook.com \
--to=wei.fang@nxp.com \
--cc=andrew+netdev@lunn.ch \
--cc=chleroy@kernel.org \
--cc=claudiu.manoil@nxp.com \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=frank.li@nxp.com \
--cc=horms@kernel.org \
--cc=imx@lists.linux.dev \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=vladimir.oltean@nxp.com \
--cc=xiaoning.wang@nxp.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox