Patch "lockd: unregister notifier blocks if the service fails to come up completely" has been added to the 4.6-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
lockd: unregister notifier blocks if the service fails to come up completely
to the 4.6-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:
lockd-unregister-notifier-blocks-if-the-service-fails-to-come-up-completely.patch
and it can be found in the queue-4.6 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
cb7d224f82e41d82518e7f9ea271d215d4d08e6eMon Sep 17 00:00:00 2001
From: Scott Mayhew <[email protected]>
Date: Thu, 30 Jun 2016 10:39:32 -0400
Subject: lockd: unregister notifier blocks if the service fails to come up completely
From: Scott Mayhew <[email protected]>
commit cb7d224f82e41d82518e7f9ea271d215d4d08e6e upstream.
If the lockd service fails to start up then we need to be sure that the notifier blocks are not registered, otherwise a subsequent start of the service could cause the same notifier to be registered twice, leading to soft lockups.
--- fs/lockd/svc.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
fs/lockd/svc.c +10 -3
@@ -335,12 +335,17 @@ static struct notifier_block lockd_inet6 };#endif -static void lockd_svc_exit_thread (void ) +static void lockd_unregister_notifiers (void ) {unregister_inetaddr_notifier (&lockd_inetaddr_notifier);#if IS_ENABLED (CONFIG_IPV6 )unregister_inet6addr_notifier (&lockd_inet6addr_notifier);#endif +} + +static void lockd_svc_exit_thread (void ) +{ +lockd_unregister_notifiers ();svc_exit_thread (nlmsvc_rqst); }
@@ -462,7 +467,7 @@ int lockd_up(struct net *net)* Note: svc_serv structures have an initial use count of 1, * so we exit through here on both success and failure. */ -err_net: +err_put:svc_destroy (serv); err_create:mutex_unlock (&nlmsvc_mutex);
@@ -470,7 +475,9 @@ err_create: err_start:lockd_down_net (serv, net); - goto err_net; +err_net: +lockd_unregister_notifiers (); + goto err_put; }EXPORT_SYMBOL_GPL (lockd_up);
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/lockd-unregister-notifier-blocks-if-the-service-fails-to-come-up-completely.patch