Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2da2c21d authored by Tom Tucker's avatar Tom Tucker Committed by J. Bruce Fields
Browse files

Add a reference to sunrpc in svc_addsock



The svc_addsock function adds transport instances without taking a
reference on the sunrpc.ko module, however, the generic transport
destruction code drops a reference when a transport instance
is destroyed.

Add a try_module_get call to the svc_addsock function for transport
instances added by this function.

Signed-off-by: default avatarTom Tucker <tom@opengridcomputing.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
Tested-by: default avatarJeff Moyer <jmoyer@redhat.com>
parent 2c5e7615
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1183,7 +1183,11 @@ int svc_addsock(struct svc_serv *serv,
	else if (so->state > SS_UNCONNECTED)
		err = -EISCONN;
	else {
		svsk = svc_setup_socket(serv, so, &err, SVC_SOCK_DEFAULTS);
		if (!try_module_get(THIS_MODULE))
			err = -ENOENT;
		else
			svsk = svc_setup_socket(serv, so, &err,
						SVC_SOCK_DEFAULTS);
		if (svsk) {
			struct sockaddr_storage addr;
			struct sockaddr *sin = (struct sockaddr *)&addr;
@@ -1196,7 +1200,8 @@ int svc_addsock(struct svc_serv *serv,
			spin_unlock_bh(&serv->sv_lock);
			svc_xprt_received(&svsk->sk_xprt);
			err = 0;
		}
		} else
			module_put(THIS_MODULE);
	}
	if (err) {
		sockfd_put(so);