projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[NET]: make netlink user -> kernel interface synchronious
[powerpc.git]
/
net
/
ipv4
/
netfilter
/
ip_queue.c
diff --git
a/net/ipv4/netfilter/ip_queue.c
b/net/ipv4/netfilter/ip_queue.c
index
aaa3f5c
..
23cbfc7
100644
(file)
--- a/
net/ipv4/netfilter/ip_queue.c
+++ b/
net/ipv4/netfilter/ip_queue.c
@@
-475,7
+475,7
@@
ipq_dev_drop(int ifindex)
#define RCV_SKB_FAIL(err) do { netlink_ack(skb, nlh, (err)); return; } while (0)
static inline void
#define RCV_SKB_FAIL(err) do { netlink_ack(skb, nlh, (err)); return; } while (0)
static inline void
-ipq_rcv_skb(struct sk_buff *skb)
+
__
ipq_rcv_skb(struct sk_buff *skb)
{
int status, type, pid, flags, nlmsglen, skblen;
struct nlmsghdr *nlh;
{
int status, type, pid, flags, nlmsglen, skblen;
struct nlmsghdr *nlh;
@@
-533,19
+533,10
@@
ipq_rcv_skb(struct sk_buff *skb)
}
static void
}
static void
-ipq_rcv_sk
(struct sock *sk, int len
)
+ipq_rcv_sk
b(struct sk_buff *skb
)
{
{
- struct sk_buff *skb;
- unsigned int qlen;
-
mutex_lock(&ipqnl_mutex);
mutex_lock(&ipqnl_mutex);
-
- for (qlen = skb_queue_len(&sk->sk_receive_queue); qlen; qlen--) {
- skb = skb_dequeue(&sk->sk_receive_queue);
- ipq_rcv_skb(skb);
- kfree_skb(skb);
- }
-
+ __ipq_rcv_skb(skb);
mutex_unlock(&ipqnl_mutex);
}
mutex_unlock(&ipqnl_mutex);
}
@@
-670,7
+661,7
@@
static int __init ip_queue_init(void)
netlink_register_notifier(&ipq_nl_notifier);
ipqnl = netlink_kernel_create(&init_net, NETLINK_FIREWALL, 0,
netlink_register_notifier(&ipq_nl_notifier);
ipqnl = netlink_kernel_create(&init_net, NETLINK_FIREWALL, 0,
- ipq_rcv_sk, NULL, THIS_MODULE);
+ ipq_rcv_sk
b
, NULL, THIS_MODULE);
if (ipqnl == NULL) {
printk(KERN_ERR "ip_queue: failed to create netlink socket\n");
goto cleanup_netlink_notifier;
if (ipqnl == NULL) {
printk(KERN_ERR "ip_queue: failed to create netlink socket\n");
goto cleanup_netlink_notifier;