X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=net%2Fsunrpc%2Fsvc_xprt.c;h=4d2189a562af00f5eb47ad794bfe4596c73e472e;hb=82ea2d7615309d755579d609ad9c11daea25d0cc;hp=f5572e31d518f85b2afbbb9ec1b8e89d36448803;hpb=23a3e178b9f8be3a900c7b11d795e54b4a131af0;p=deliverable%2Flinux.git diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index f5572e31d518..4d2189a562af 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -136,6 +136,8 @@ static void svc_xprt_free(struct kref *kref) /* See comment on corresponding get in xs_setup_bc_tcp(): */ if (xprt->xpt_bc_xprt) xprt_put(xprt->xpt_bc_xprt); + if (xprt->xpt_bc_xps) + xprt_switch_put(xprt->xpt_bc_xps); xprt->xpt_ops->xpo_free(xprt); module_put(owner); } @@ -331,8 +333,12 @@ static bool svc_xprt_has_something_to_do(struct svc_xprt *xprt) { if (xprt->xpt_flags & ((1<xpt_flags & ((1<xpt_ops->xpo_has_wspace(xprt); + if (xprt->xpt_flags & ((1<xpt_ops->xpo_has_wspace(xprt)) + return true; + trace_svc_xprt_no_write_space(xprt); + return false; + } return false; }