[NET]: Avoid atomic xchg() for non-error case
[linux-block.git] / include / net / sock.h
index 982b4ecd187b9393b9470a3da7462bdd878a0e52..0fbae85c6d5556debfed4269a0d4d7abaf1d0b14 100644 (file)
@@ -1166,7 +1166,10 @@ static inline int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
  
 static inline int sock_error(struct sock *sk)
 {
-       int err = xchg(&sk->sk_err, 0);
+       int err;
+       if (likely(!sk->sk_err))
+               return 0;
+       err = xchg(&sk->sk_err, 0);
        return -err;
 }