|
@@ -1961,25 +1961,25 @@ struct netlink_broadcast_data {
|
|
void *tx_data;
|
|
void *tx_data;
|
|
};
|
|
};
|
|
|
|
|
|
-static int do_one_broadcast(struct sock *sk,
|
|
|
|
- struct netlink_broadcast_data *p)
|
|
|
|
|
|
+static void do_one_broadcast(struct sock *sk,
|
|
|
|
+ struct netlink_broadcast_data *p)
|
|
{
|
|
{
|
|
struct netlink_sock *nlk = nlk_sk(sk);
|
|
struct netlink_sock *nlk = nlk_sk(sk);
|
|
int val;
|
|
int val;
|
|
|
|
|
|
if (p->exclude_sk == sk)
|
|
if (p->exclude_sk == sk)
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
if (nlk->portid == p->portid || p->group - 1 >= nlk->ngroups ||
|
|
if (nlk->portid == p->portid || p->group - 1 >= nlk->ngroups ||
|
|
!test_bit(p->group - 1, nlk->groups))
|
|
!test_bit(p->group - 1, nlk->groups))
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
if (!net_eq(sock_net(sk), p->net))
|
|
if (!net_eq(sock_net(sk), p->net))
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
if (p->failure) {
|
|
if (p->failure) {
|
|
netlink_overrun(sk);
|
|
netlink_overrun(sk);
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
sock_hold(sk);
|
|
sock_hold(sk);
|
|
@@ -2017,9 +2017,6 @@ static int do_one_broadcast(struct sock *sk,
|
|
p->skb2 = NULL;
|
|
p->skb2 = NULL;
|
|
}
|
|
}
|
|
sock_put(sk);
|
|
sock_put(sk);
|
|
-
|
|
|
|
-out:
|
|
|
|
- return 0;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
int netlink_broadcast_filtered(struct sock *ssk, struct sk_buff *skb, u32 portid,
|
|
int netlink_broadcast_filtered(struct sock *ssk, struct sk_buff *skb, u32 portid,
|