sock: deduplicate errqueue dequeue
[cascardo/linux.git] / net / rxrpc / ar-error.c
index db57458..74c0fcd 100644 (file)
@@ -37,7 +37,7 @@ void rxrpc_UDP_error_report(struct sock *sk)
 
        _enter("%p{%d}", sk, local->debug_id);
 
-       skb = skb_dequeue(&sk->sk_error_queue);
+       skb = sock_dequeue_err_skb(sk);
        if (!skb) {
                _leave("UDP socket errqueue empty");
                return;
@@ -111,18 +111,6 @@ void rxrpc_UDP_error_report(struct sock *sk)
        skb_queue_tail(&trans->error_queue, skb);
        rxrpc_queue_work(&trans->error_handler);
 
-       /* reset and regenerate socket error */
-       spin_lock_bh(&sk->sk_error_queue.lock);
-       sk->sk_err = 0;
-       skb = skb_peek(&sk->sk_error_queue);
-       if (skb) {
-               sk->sk_err = SKB_EXT_ERR(skb)->ee.ee_errno;
-               spin_unlock_bh(&sk->sk_error_queue.lock);
-               sk->sk_error_report(sk);
-       } else {
-               spin_unlock_bh(&sk->sk_error_queue.lock);
-       }
-
        _leave("");
 }