diff options
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
| -rw-r--r-- | net/sunrpc/rpc_pipe.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 04040476082..21fde99e5c5 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -71,7 +71,9 @@ static void rpc_purge_list(wait_queue_head_t *waitq, struct list_head *head,  		msg->errno = err;  		destroy_msg(msg);  	} while (!list_empty(head)); -	wake_up(waitq); + +	if (waitq) +		wake_up(waitq);  }  static void @@ -91,11 +93,9 @@ rpc_timeout_upcall_queue(struct work_struct *work)  	}  	dentry = dget(pipe->dentry);  	spin_unlock(&pipe->lock); -	if (dentry) { -		rpc_purge_list(&RPC_I(dentry->d_inode)->waitq, -			       &free_list, destroy_msg, -ETIMEDOUT); -		dput(dentry); -	} +	rpc_purge_list(dentry ? &RPC_I(dentry->d_inode)->waitq : NULL, +			&free_list, destroy_msg, -ETIMEDOUT); +	dput(dentry);  }  ssize_t rpc_pipe_generic_upcall(struct file *filp, struct rpc_pipe_msg *msg,  |