Commit 2f2d9972 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

net: annotate lockless accesses to sk->sk_err_soft



This field can be read/written without lock synchronization.

tcp and dccp have been handled in different patches.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9a25f0cb
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -601,7 +601,7 @@ static void lowcomms_error_report(struct sock *sk)
				   "sk_err=%d/%d\n", dlm_our_nodeid(),
				   con->nodeid, &inet->inet_daddr,
				   ntohs(inet->inet_dport), sk->sk_err,
				   sk->sk_err_soft);
				   READ_ONCE(sk->sk_err_soft));
		break;
#if IS_ENABLED(CONFIG_IPV6)
	case AF_INET6:
@@ -610,14 +610,15 @@ static void lowcomms_error_report(struct sock *sk)
				   "dport %d, sk_err=%d/%d\n", dlm_our_nodeid(),
				   con->nodeid, &sk->sk_v6_daddr,
				   ntohs(inet->inet_dport), sk->sk_err,
				   sk->sk_err_soft);
				   READ_ONCE(sk->sk_err_soft));
		break;
#endif
	default:
		printk_ratelimited(KERN_ERR "dlm: node %d: socket error "
				   "invalid socket family %d set, "
				   "sk_err=%d/%d\n", dlm_our_nodeid(),
				   sk->sk_family, sk->sk_err, sk->sk_err_soft);
				   sk->sk_family, sk->sk_err,
				   READ_ONCE(sk->sk_err_soft));
		break;
	}

+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ static int sigd_send(struct atm_vcc *vcc, struct sk_buff *skb)
		break;
	case as_addparty:
	case as_dropparty:
		sk->sk_err_soft = -msg->reply;
		WRITE_ONCE(sk->sk_err_soft, -msg->reply);
					/* < 0 failure, otherwise ep_ref */
		clear_bit(ATM_VF_WAITING, &vcc->flags);
		break;
+1 −1
Original line number Diff line number Diff line
@@ -1322,7 +1322,7 @@ int inet_sk_rebuild_header(struct sock *sk)
		    sk->sk_state != TCP_SYN_SENT ||
		    (sk->sk_userlocks & SOCK_BINDADDR_LOCK) ||
		    (err = inet_sk_reselect_saddr(sk)) != 0)
			sk->sk_err_soft = -err;
			WRITE_ONCE(sk->sk_err_soft, -err);
	}

	return err;
+1 −1
Original line number Diff line number Diff line
@@ -845,7 +845,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
		dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p);
		if (IS_ERR(dst)) {
			sk->sk_route_caps = 0;
			sk->sk_err_soft = -PTR_ERR(dst);
			WRITE_ONCE(sk->sk_err_soft, -PTR_ERR(dst));
			return PTR_ERR(dst);
		}

+1 −1
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ int inet6_csk_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl_unused

	dst = inet6_csk_route_socket(sk, &fl6);
	if (IS_ERR(dst)) {
		sk->sk_err_soft = -PTR_ERR(dst);
		WRITE_ONCE(sk->sk_err_soft, -PTR_ERR(dst));
		sk->sk_route_caps = 0;
		kfree_skb(skb);
		return PTR_ERR(dst);
Loading