* Re: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
2025-11-21 3:51 [PATCH] net: dsa: Fix error handling in dsa_port_parse_of Ma Ke
@ 2025-11-21 13:40 ` Andrew Lunn
2025-11-21 18:07 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Andrew Lunn @ 2025-11-21 13:40 UTC (permalink / raw)
To: Ma Ke
Cc: olteanv, davem, edumazet, kuba, pabeni, horms, florian.fainelli,
stephen, robh, netdev, linux-kernel, akpm, stable
On Fri, Nov 21, 2025 at 11:51:30AM +0800, Ma Ke wrote:
> When of_find_net_device_by_node() successfully acquires a reference to
> a network device but the subsequent call to dsa_port_parse_cpu()
> fails, dsa_port_parse_of() returns without releasing the reference
> count on the network device.
>
> of_find_net_device_by_node() increments the reference count of the
> returned structure, which should be balanced with a corresponding
> put_device() when the reference is no longer needed.
>
> Found by code review.
>
> Cc: stable@vger.kernel.org
> Fixes: 6ca80638b90c ("net: dsa: Use conduit and user terms")
Why did you pick this commit for the Fixes tag?
> @@ -1259,7 +1260,13 @@ static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
> return -EPROBE_DEFER;
>
> user_protocol = of_get_property(dn, "dsa-tag-protocol", NULL);
> - return dsa_port_parse_cpu(dp, conduit, user_protocol);
> + err = dsa_port_parse_cpu(dp, conduit, user_protocol);
> + if (err) {
> + put_device(conduit);
> + return err;
> + }
> +
> + return 0;
> }
>
> if (link)
> --
> 2.17.1
You can simplify this to:
err = dsa_port_parse_cpu(dp, conduit, user_protocol);
if (err)
put_device(conduit);
return err;
https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html
Andrew
---
pw-bot: cr
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
2025-11-21 3:51 [PATCH] net: dsa: Fix error handling in dsa_port_parse_of Ma Ke
2025-11-21 13:40 ` Andrew Lunn
@ 2025-11-21 18:07 ` kernel test robot
2025-11-21 19:13 ` kernel test robot
2025-11-22 19:58 ` Markus Elfring
3 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2025-11-21 18:07 UTC (permalink / raw)
To: Ma Ke, andrew, olteanv, davem, edumazet, kuba, pabeni, horms,
florian.fainelli, stephen, robh
Cc: llvm, oe-kbuild-all, netdev, linux-kernel, akpm, Ma Ke, stable
Hi Ma,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
[also build test ERROR on net/main linus/master v6.18-rc6 next-20251121]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ma-Ke/net-dsa-Fix-error-handling-in-dsa_port_parse_of/20251121-115449
base: net-next/main
patch link: https://lore.kernel.org/r/20251121035130.16020-1-make24%40iscas.ac.cn
patch subject: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
config: i386-randconfig-004-20251121 (https://download.01.org/0day-ci/archive/20251122/202511220109.1PvI00Sr-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251122/202511220109.1PvI00Sr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511220109.1PvI00Sr-lkp@intel.com/
All errors (new ones prefixed by >>):
>> net/dsa/dsa.c:1265:15: error: incompatible pointer types passing 'struct net_device *' to parameter of type 'struct device *' [-Werror,-Wincompatible-pointer-types]
1265 | put_device(conduit);
| ^~~~~~~
include/linux/device.h:1181:32: note: passing argument to parameter 'dev' here
1181 | void put_device(struct device *dev);
| ^
1 error generated.
vim +1265 net/dsa/dsa.c
1243
1244 static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
1245 {
1246 struct device_node *ethernet = of_parse_phandle(dn, "ethernet", 0);
1247 const char *name = of_get_property(dn, "label", NULL);
1248 bool link = of_property_read_bool(dn, "link");
1249 int err;
1250
1251 dp->dn = dn;
1252
1253 if (ethernet) {
1254 struct net_device *conduit;
1255 const char *user_protocol;
1256
1257 conduit = of_find_net_device_by_node(ethernet);
1258 of_node_put(ethernet);
1259 if (!conduit)
1260 return -EPROBE_DEFER;
1261
1262 user_protocol = of_get_property(dn, "dsa-tag-protocol", NULL);
1263 err = dsa_port_parse_cpu(dp, conduit, user_protocol);
1264 if (err) {
> 1265 put_device(conduit);
1266 return err;
1267 }
1268
1269 return 0;
1270 }
1271
1272 if (link)
1273 return dsa_port_parse_dsa(dp);
1274
1275 return dsa_port_parse_user(dp, name);
1276 }
1277
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
2025-11-21 3:51 [PATCH] net: dsa: Fix error handling in dsa_port_parse_of Ma Ke
2025-11-21 13:40 ` Andrew Lunn
2025-11-21 18:07 ` kernel test robot
@ 2025-11-21 19:13 ` kernel test robot
2025-11-22 19:58 ` Markus Elfring
3 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2025-11-21 19:13 UTC (permalink / raw)
To: Ma Ke, andrew, olteanv, davem, edumazet, kuba, pabeni, horms,
florian.fainelli, stephen, robh
Cc: oe-kbuild-all, netdev, linux-kernel, akpm, Ma Ke, stable
Hi Ma,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
[also build test ERROR on net/main linus/master v6.18-rc6 next-20251121]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ma-Ke/net-dsa-Fix-error-handling-in-dsa_port_parse_of/20251121-115449
base: net-next/main
patch link: https://lore.kernel.org/r/20251121035130.16020-1-make24%40iscas.ac.cn
patch subject: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20251122/202511220203.nggER5yL-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251122/202511220203.nggER5yL-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511220203.nggER5yL-lkp@intel.com/
All errors (new ones prefixed by >>):
net/dsa/dsa.c: In function 'dsa_port_parse_of':
>> net/dsa/dsa.c:1265:36: error: passing argument 1 of 'put_device' from incompatible pointer type [-Wincompatible-pointer-types]
1265 | put_device(conduit);
| ^~~~~~~
| |
| struct net_device *
In file included from net/dsa/dsa.c:10:
include/linux/device.h:1181:32: note: expected 'struct device *' but argument is of type 'struct net_device *'
1181 | void put_device(struct device *dev);
| ~~~~~~~~~~~~~~~^~~
vim +/put_device +1265 net/dsa/dsa.c
1243
1244 static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
1245 {
1246 struct device_node *ethernet = of_parse_phandle(dn, "ethernet", 0);
1247 const char *name = of_get_property(dn, "label", NULL);
1248 bool link = of_property_read_bool(dn, "link");
1249 int err;
1250
1251 dp->dn = dn;
1252
1253 if (ethernet) {
1254 struct net_device *conduit;
1255 const char *user_protocol;
1256
1257 conduit = of_find_net_device_by_node(ethernet);
1258 of_node_put(ethernet);
1259 if (!conduit)
1260 return -EPROBE_DEFER;
1261
1262 user_protocol = of_get_property(dn, "dsa-tag-protocol", NULL);
1263 err = dsa_port_parse_cpu(dp, conduit, user_protocol);
1264 if (err) {
> 1265 put_device(conduit);
1266 return err;
1267 }
1268
1269 return 0;
1270 }
1271
1272 if (link)
1273 return dsa_port_parse_dsa(dp);
1274
1275 return dsa_port_parse_user(dp, name);
1276 }
1277
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
2025-11-21 3:51 [PATCH] net: dsa: Fix error handling in dsa_port_parse_of Ma Ke
` (2 preceding siblings ...)
2025-11-21 19:13 ` kernel test robot
@ 2025-11-22 19:58 ` Markus Elfring
2025-11-23 6:22 ` Greg KH
3 siblings, 1 reply; 6+ messages in thread
From: Markus Elfring @ 2025-11-22 19:58 UTC (permalink / raw)
To: make24, netdev, Andrew Lunn, David S. Miller, Eric Dumazet,
Florian Fainelli, Jakub Kicinski, Paolo Abeni, Rob Herring,
Simon Horman, Stephen Hemminger, Vladimir Oltean
Cc: stable, LKML, Andrew Morton
…
> returned structure, which should be balanced with a corresponding
> put_device() when the reference is no longer needed.
…
* Would a corresponding imperative wording become helpful for an improved change description?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.18-rc6#n94
* How do you think about to omit an extra check for the variable “err”
in the affected if branch because it can always be returned here?
* Would it be helpful to append parentheses to the function name in the summary phrase?
Regards,
Markus
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] net: dsa: Fix error handling in dsa_port_parse_of
2025-11-22 19:58 ` Markus Elfring
@ 2025-11-23 6:22 ` Greg KH
0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2025-11-23 6:22 UTC (permalink / raw)
To: Markus Elfring
Cc: make24, netdev, Andrew Lunn, David S. Miller, Eric Dumazet,
Florian Fainelli, Jakub Kicinski, Paolo Abeni, Rob Herring,
Simon Horman, Stephen Hemminger, Vladimir Oltean, stable, LKML,
Andrew Morton
On Sat, Nov 22, 2025 at 08:58:12PM +0100, Markus Elfring wrote:
> …
> > returned structure, which should be balanced with a corresponding
> > put_device() when the reference is no longer needed.
> …
>
> * Would a corresponding imperative wording become helpful for an improved change description?
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.18-rc6#n94
>
> * How do you think about to omit an extra check for the variable “err”
> in the affected if branch because it can always be returned here?
>
> * Would it be helpful to append parentheses to the function name in the summary phrase?
>
>
> Regards,
> Markus
>
Hi,
This is the semi-friendly patch-bot of Greg Kroah-Hartman.
Markus, you seem to have sent a nonsensical or otherwise pointless
review comment to a patch submission on a Linux kernel developer mailing
list. I strongly suggest that you not do this anymore. Please do not
bother developers who are actively working to produce patches and
features with comments that, in the end, are a waste of time.
Patch submitter, please ignore Markus's suggestion; you do not need to
follow it at all. The person/bot/AI that sent it is being ignored by
almost all Linux kernel maintainers for having a persistent pattern of
behavior of producing distracting and pointless commentary, and
inability to adapt to feedback. Please feel free to also ignore emails
from them.
thanks,
greg k-h's patch email bot
^ permalink raw reply [flat|nested] 6+ messages in thread