diff options
Diffstat (limited to 'net/rxrpc/ar-error.c')
-rw-r--r-- | net/rxrpc/ar-error.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/net/rxrpc/ar-error.c b/net/rxrpc/ar-error.c index db57458c824c..74c0fcd36838 100644 --- a/net/rxrpc/ar-error.c +++ b/net/rxrpc/ar-error.c | |||
@@ -37,7 +37,7 @@ void rxrpc_UDP_error_report(struct sock *sk) | |||
37 | 37 | ||
38 | _enter("%p{%d}", sk, local->debug_id); | 38 | _enter("%p{%d}", sk, local->debug_id); |
39 | 39 | ||
40 | skb = skb_dequeue(&sk->sk_error_queue); | 40 | skb = sock_dequeue_err_skb(sk); |
41 | if (!skb) { | 41 | if (!skb) { |
42 | _leave("UDP socket errqueue empty"); | 42 | _leave("UDP socket errqueue empty"); |
43 | return; | 43 | return; |
@@ -111,18 +111,6 @@ void rxrpc_UDP_error_report(struct sock *sk) | |||
111 | skb_queue_tail(&trans->error_queue, skb); | 111 | skb_queue_tail(&trans->error_queue, skb); |
112 | rxrpc_queue_work(&trans->error_handler); | 112 | rxrpc_queue_work(&trans->error_handler); |
113 | 113 | ||
114 | /* reset and regenerate socket error */ | ||
115 | spin_lock_bh(&sk->sk_error_queue.lock); | ||
116 | sk->sk_err = 0; | ||
117 | skb = skb_peek(&sk->sk_error_queue); | ||
118 | if (skb) { | ||
119 | sk->sk_err = SKB_EXT_ERR(skb)->ee.ee_errno; | ||
120 | spin_unlock_bh(&sk->sk_error_queue.lock); | ||
121 | sk->sk_error_report(sk); | ||
122 | } else { | ||
123 | spin_unlock_bh(&sk->sk_error_queue.lock); | ||
124 | } | ||
125 | |||
126 | _leave(""); | 114 | _leave(""); |
127 | } | 115 | } |
128 | 116 | ||