|
@@ -1739,7 +1739,7 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
|
|
|
match->flags = flags;
|
|
|
INIT_LIST_HEAD(&match->list);
|
|
|
spin_lock_init(&match->lock);
|
|
|
- atomic_set(&match->sk_ref, 0);
|
|
|
+ refcount_set(&match->sk_ref, 0);
|
|
|
fanout_init_data(match);
|
|
|
match->prot_hook.type = po->prot_hook.type;
|
|
|
match->prot_hook.dev = po->prot_hook.dev;
|
|
@@ -1753,10 +1753,10 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
|
|
|
match->prot_hook.type == po->prot_hook.type &&
|
|
|
match->prot_hook.dev == po->prot_hook.dev) {
|
|
|
err = -ENOSPC;
|
|
|
- if (atomic_read(&match->sk_ref) < PACKET_FANOUT_MAX) {
|
|
|
+ if (refcount_read(&match->sk_ref) < PACKET_FANOUT_MAX) {
|
|
|
__dev_remove_pack(&po->prot_hook);
|
|
|
po->fanout = match;
|
|
|
- atomic_inc(&match->sk_ref);
|
|
|
+ refcount_set(&match->sk_ref, refcount_read(&match->sk_ref) + 1);
|
|
|
__fanout_link(sk, po);
|
|
|
err = 0;
|
|
|
}
|
|
@@ -1785,7 +1785,7 @@ static struct packet_fanout *fanout_release(struct sock *sk)
|
|
|
if (f) {
|
|
|
po->fanout = NULL;
|
|
|
|
|
|
- if (atomic_dec_and_test(&f->sk_ref))
|
|
|
+ if (refcount_dec_and_test(&f->sk_ref))
|
|
|
list_del(&f->list);
|
|
|
else
|
|
|
f = NULL;
|