netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net/netlink] Question about potential memleak in netlink_proto_init()
@ 2024-03-15  0:47 Chenyuan Yang
  2024-03-15  0:53 ` Florian Westphal
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Chenyuan Yang @ 2024-03-15  0:47 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, horms, anjali.k.kulkarni,
	pctammela, andriy.shevchenko, dhowells, kuniyu
  Cc: netdev, zzjas98

Dear Netlink Developers,

We are curious whether the function `netlink_proto_init()` might have a memory leak.

The function is https://elixir.bootlin.com/linux/v6.8/source/net/netlink/af_netlink.c#L2908
and the relevant code is
```
static int __init netlink_proto_init(void)
{
	int i;
  ...

	for (i = 0; i < MAX_LINKS; i++) {
		if (rhashtable_init(&nl_table[i].hash,
				    &netlink_rhashtable_params) < 0) {
			while (--i > 0)
				rhashtable_destroy(&nl_table[i].hash);
			kfree(nl_table);
			goto panic;
		}
	}
  ...
}
```

In the for loop, when `rhashtable_init()` fails, the function will free the allocated memory for `nl_table[i].hash` by checking `while (--i > 0)`. However, the first element (`i=1`) of `nl_table` is not freed since `i` is decremented before the check.

Based on our understanding, a possible fix would be
```
-      while (--i > 0)
+      while (--i >= 0)
```

Please kindly correct us if we missed any key information. Looking forward to your response!

Best,
Chenyuan

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-03-16 15:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-15  0:47 [net/netlink] Question about potential memleak in netlink_proto_init() Chenyuan Yang
2024-03-15  0:53 ` Florian Westphal
2024-03-15  0:54 ` Kuniyuki Iwashima
2024-03-15 14:36 ` Andy Shevchenko
2024-03-16 15:11   ` Chenyuan Yang

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).