Skip to contentSkip to conversation

Patch "netlink: put module reference if dump start fails" has been added to the 4.14-stable tree

PATCH [email protected] 2 participants 3 messages Mar 7, 2018

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

netlink: put module reference if dump start fails

to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
netlink-put-module-reference-if-dump-start-fails.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Tue Mar 6 19:02:12 PST 2018

From: "Jason A. Donenfeld" <[email protected]>
Date: Wed, 21 Feb 2018 04:41:59 +0100
Subject: netlink: put module reference if dump start fails

From: "Jason A. Donenfeld" <[email protected]>

[ Upstream commit b87b6194be631c94785fe93398651e804ed43e28 ]

Before, if cb->start() failed, the module reference would never be put, because cb->cb_running is intentionally false at this point. Users are generally annoyed by this because they can no longer unload modules that leak references. Also, it may be possible to tediously wrap a reference counter back to zero, especially since module.c still uses atomic_inc instead of refcount_inc.

This patch expands the error path to simply call module_put if cb->start() fails.

Fixes 41c87425a1ac ("netlink: do not set cb_running if dump's start() errs")
---
 net/netlink/af_netlink.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
net/netlink/af_netlink.c +3 -1
@@ -2276,7 +2276,7 @@ int __netlink_dump_start(struct sock *ss
 	if (cb->start) {
 		ret = cb->start(cb);
 		if (ret)
-			goto error_unlock;
+			goto error_put;
 	}
 
 	nlk->cb_running = true;
@@ -2296,6 +2296,8 @@ int __netlink_dump_start(struct sock *ss
 	 */
 	return -EINTR;
 
+error_put:
+	module_put(control->module);
 error_unlock:
 	sock_put(sk);
 	mutex_unlock(nlk->cb_mutex);

Patches currently in stable-queue which might be from [email protected] are

queue-4.14/netlink-put-module-reference-if-dump-start-fails.patch

#1 lore raw
Quoted 1 line · On Wed, Mar 7, 2018 at 4:30 AM, <[email protected]> wrote:

queue-4.14/netlink-put-module-reference-if-dump-start-fails.patch

FYI, this patch is useful for 4.16-rc0+, 4.15+, 4.14+, 4.13.14+, and 4.9.63+. Looks like 16, 15, and 14 you have covered, and 13 you don't care about anymore. But you might want to apply this to 4.9, as it affects the in-tree net/ipv6/ila/ila_xlat.c driver, which is a tristate, meaning its refcount is affected by the bug this patch fixes. The patch appears to apply cleanly.

Jason

author maintainer
#2 lore raw
Quoted 9 lines · Jason A. Donenfeld
Quoted 1 line · On Wed, Mar 7, 2018 at 4:30 AM, <[email protected]> wrote:

queue-4.14/netlink-put-module-reference-if-dump-start-fails.patch

FYI, this patch is useful for 4.16-rc0+, 4.15+, 4.14+, 4.13.14+, and 4.9.63+. Looks like 16, 15, and 14 you have covered, and 13 you don't care about anymore. But you might want to apply this to 4.9, as it affects the in-tree net/ipv6/ila/ila_xlat.c driver, which is a tristate, meaning its refcount is affected by the bug this patch fixes. The patch appears to apply cleanly.

Thanks for letting me know, now queued up.

greg k-h