diff options
Diffstat (limited to 'net/sunrpc/xprtsock.c')
| -rw-r--r-- | net/sunrpc/xprtsock.c | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 75853cabf4c..68b0a81c31d 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -1746,7 +1746,6 @@ static inline void xs_reclassify_socketu(struct socket *sock)  {  	struct sock *sk = sock->sk; -	BUG_ON(sock_owned_by_user(sk));  	sock_lock_init_class_and_name(sk, "slock-AF_LOCAL-RPC",  		&xs_slock_key[1], "sk_lock-AF_LOCAL-RPC", &xs_key[1]);  } @@ -1755,7 +1754,6 @@ static inline void xs_reclassify_socket4(struct socket *sock)  {  	struct sock *sk = sock->sk; -	BUG_ON(sock_owned_by_user(sk));  	sock_lock_init_class_and_name(sk, "slock-AF_INET-RPC",  		&xs_slock_key[0], "sk_lock-AF_INET-RPC", &xs_key[0]);  } @@ -1764,13 +1762,16 @@ static inline void xs_reclassify_socket6(struct socket *sock)  {  	struct sock *sk = sock->sk; -	BUG_ON(sock_owned_by_user(sk));  	sock_lock_init_class_and_name(sk, "slock-AF_INET6-RPC",  		&xs_slock_key[1], "sk_lock-AF_INET6-RPC", &xs_key[1]);  }  static inline void xs_reclassify_socket(int family, struct socket *sock)  { +	WARN_ON_ONCE(sock_owned_by_user(sock->sk)); +	if (sock_owned_by_user(sock->sk)) +		return; +  	switch (family) {  	case AF_LOCAL:  		xs_reclassify_socketu(sock); @@ -1901,6 +1902,10 @@ static void xs_local_setup_socket(struct work_struct *work)  		dprintk("RPC:       xprt %p: socket %s does not exist\n",  				xprt, xprt->address_strings[RPC_DISPLAY_ADDR]);  		break; +	case -ECONNREFUSED: +		dprintk("RPC:       xprt %p: connection refused for %s\n", +				xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); +		break;  	default:  		printk(KERN_ERR "%s: unhandled error (%d) connecting to %s\n",  				__func__, -status, @@ -2329,9 +2334,11 @@ static void *bc_malloc(struct rpc_task *task, size_t size)  	struct page *page;  	struct rpc_buffer *buf; -	BUG_ON(size > PAGE_SIZE - sizeof(struct rpc_buffer)); -	page = alloc_page(GFP_KERNEL); +	WARN_ON_ONCE(size > PAGE_SIZE - sizeof(struct rpc_buffer)); +	if (size > PAGE_SIZE - sizeof(struct rpc_buffer)) +		return NULL; +	page = alloc_page(GFP_KERNEL);  	if (!page)  		return NULL; @@ -2393,7 +2400,6 @@ static int bc_send_request(struct rpc_task *task)  {  	struct rpc_rqst *req = task->tk_rqstp;  	struct svc_xprt	*xprt; -	struct svc_sock         *svsk;  	u32                     len;  	dprintk("sending request with xid: %08x\n", ntohl(req->rq_xid)); @@ -2401,7 +2407,6 @@ static int bc_send_request(struct rpc_task *task)  	 * Get the server socket associated with this callback xprt  	 */  	xprt = req->rq_xprt->bc_xprt; -	svsk = container_of(xprt, struct svc_sock, sk_xprt);  	/*  	 * Grab the mutex to serialize data as the connection is shared  |