Skip to content

Commit 5788527

Browse files
jopamokuba-moo
authored andcommitted
net-shapers: don't free reply skb after genlmsg_reply()
genlmsg_reply() hands the reply skb to netlink, and netlink_unicast() consumes it on all return paths, whether the skb is queued successfully or freed on an error path. net_shaper_nl_get_doit() and net_shaper_nl_cap_get_doit() currently jump to free_msg after genlmsg_reply() fails and call nlmsg_free(msg), which can hit the same skb twice. Return the genlmsg_reply() error directly and keep free_msg only for pre-reply failures. Fixes: 4b623f9 ("net-shapers: implement NL get operation") Fixes: 553ea9f ("net: shaper: implement introspection support") Cc: stable@vger.kernel.org Signed-off-by: Paul Moses <p@1g4.org> Link: https://patch.msgid.link/20260309173450.538026-2-p@1g4.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent f441b48 commit 5788527

1 file changed

Lines changed: 2 additions & 9 deletions

File tree

net/shaper/shaper.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -759,11 +759,7 @@ int net_shaper_nl_get_doit(struct sk_buff *skb, struct genl_info *info)
759759
if (ret)
760760
goto free_msg;
761761

762-
ret = genlmsg_reply(msg, info);
763-
if (ret)
764-
goto free_msg;
765-
766-
return 0;
762+
return genlmsg_reply(msg, info);
767763

768764
free_msg:
769765
nlmsg_free(msg);
@@ -1313,10 +1309,7 @@ int net_shaper_nl_cap_get_doit(struct sk_buff *skb, struct genl_info *info)
13131309
if (ret)
13141310
goto free_msg;
13151311

1316-
ret = genlmsg_reply(msg, info);
1317-
if (ret)
1318-
goto free_msg;
1319-
return 0;
1312+
return genlmsg_reply(msg, info);
13201313

13211314
free_msg:
13221315
nlmsg_free(msg);

0 commit comments

Comments
 (0)