Message ID | aff028e3eb2b768b9895fa6349fa1981ae22f098.camel@oracle.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 438989137acd6c620e9990c24dead5ffdd8e77c1 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | netlink: Unset cb_running when terminating dump on release | expand |
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sat, 15 Feb 2025 09:40:51 +0000 you wrote: > When we terminated the dump, the callback isn't running, so cb_running > should be set to false to be logically consistent. > > cb_running signifies whether a dump is ongoing. It is set to true in > cb->start(), and is checked in netlink_dump() to be true initially. > After the dump, it is set to false in the same function. > > [...] Here is the summary with links: - netlink: Unset cb_running when terminating dump on release https://git.kernel.org/netdev/net-next/c/438989137acd You are awesome, thank you!
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 85311226183a..f8f13058a46e 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -771,6 +771,7 @@ static int netlink_release(struct socket *sock) nlk->cb.done(&nlk->cb); module_put(nlk->cb.module); kfree_skb(nlk->cb.skb); + WRITE_ONCE(nlk->cb_running, false); } module_put(nlk->module);
When we terminated the dump, the callback isn't running, so cb_running should be set to false to be logically consistent. cb_running signifies whether a dump is ongoing. It is set to true in cb->start(), and is checked in netlink_dump() to be true initially. After the dump, it is set to false in the same function. When we terminate a dump before it ends (see 1904fb9ebf91 ("netlink: terminate outstanding dump on socket close")), we do not unset the boolean flag cb_running. This is wrong - since the dump is no longer running (we terminated it), it must be set to false to convey the correct state. Signed-off-by: Siddh Raman Pant <siddh.raman.pant@oracle.com> --- net/netlink/af_netlink.c | 1 + 1 file changed, 1 insertion(+)