diff options
Diffstat (limited to 'drivers/net/wireguard/netlink.c')
| -rw-r--r-- | drivers/net/wireguard/netlink.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/wireguard/netlink.c b/drivers/net/wireguard/netlink.c index e220d761b1f2..f7055180ba4a 100644 --- a/drivers/net/wireguard/netlink.c +++ b/drivers/net/wireguard/netlink.c @@ -164,8 +164,8 @@ get_peer(struct wg_peer *peer, struct sk_buff *skb, struct dump_ctx *ctx)  	if (!allowedips_node)  		goto no_allowedips;  	if (!ctx->allowedips_seq) -		ctx->allowedips_seq = peer->device->peer_allowedips.seq; -	else if (ctx->allowedips_seq != peer->device->peer_allowedips.seq) +		ctx->allowedips_seq = ctx->wg->peer_allowedips.seq; +	else if (ctx->allowedips_seq != ctx->wg->peer_allowedips.seq)  		goto no_allowedips;  	allowedips_nest = nla_nest_start(skb, WGPEER_A_ALLOWEDIPS); @@ -255,17 +255,17 @@ static int wg_get_device_dump(struct sk_buff *skb, struct netlink_callback *cb)  	if (!peers_nest)  		goto out;  	ret = 0; -	/* If the last cursor was removed via list_del_init in peer_remove, then +	lockdep_assert_held(&wg->device_update_lock); +	/* If the last cursor was removed in peer_remove or peer_remove_all, then  	 * we just treat this the same as there being no more peers left. The  	 * reason is that seq_nr should indicate to userspace that this isn't a  	 * coherent dump anyway, so they'll try again.  	 */  	if (list_empty(&wg->peer_list) || -	    (ctx->next_peer && list_empty(&ctx->next_peer->peer_list))) { +	    (ctx->next_peer && ctx->next_peer->is_dead)) {  		nla_nest_cancel(skb, peers_nest);  		goto out;  	} -	lockdep_assert_held(&wg->device_update_lock);  	peer = list_prepare_entry(ctx->next_peer, &wg->peer_list, peer_list);  	list_for_each_entry_continue(peer, &wg->peer_list, peer_list) {  		if (get_peer(peer, skb, ctx)) {  | 
