summaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-12-04 03:58:56 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-12-04 03:58:56 +0000
commit1d67e90f19a7acfd9a05dc59678e7d0c5090bd0d (patch)
tree357efc7b93f8f5102110d20d293f41360ec212fc /net/ipv4
parentaea27b2e18d69af87e673972246e66657b4fa274 (diff)
Merge with Linux 2.3.21.
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/ipconfig.c2
-rw-r--r--net/ipv4/tcp.c2
-rw-r--r--net/ipv4/tcp_input.c11
3 files changed, 9 insertions, 6 deletions
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 37b41e93a..5ad993e60 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -117,6 +117,7 @@ static int __init ic_open_devs(void)
last = &ic_first_dev;
read_lock(&dev_base_lock);
+ rtnl_lock();
for (dev = dev_base; dev; dev = dev->next) {
if (user_dev_name[0] ? !strcmp(dev->name, user_dev_name) :
(!(dev->flags & IFF_LOOPBACK) &&
@@ -148,6 +149,7 @@ static int __init ic_open_devs(void)
DBG(("IP-Config: Opened %s (able=%d)\n", dev->name, able));
}
}
+ rtnl_unlock();
read_unlock(&dev_base_lock);
*last = NULL;
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index b8e5d197c..4135d4c89 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -626,7 +626,7 @@ void tcp_write_space(struct sock *sk)
wake_up_interruptible(sk->sleep);
if (sock_wspace(sk) >= tcp_min_write_space(sk))
- sock_wake_async(sk->socket, 2);
+ sock_wake_async(sk->socket, 2, POLL_OUT);
}
read_unlock(&sk->callback_lock);
}
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index f0711fccc..2f6bd37c9 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1403,7 +1403,7 @@ static void tcp_fin(struct sk_buff *skb, struct sock *sk, struct tcphdr *th)
if (!sk->dead) {
wake_up_interruptible(sk->sleep);
- sock_wake_async(sk->socket, 1);
+ sock_wake_async(sk->socket, 1, POLL_HUP);
}
switch(sk->state) {
@@ -1806,7 +1806,7 @@ static int tcp_data(struct sk_buff *skb, struct sock *sk, unsigned int len)
*/
if (!sk->dead) {
wake_up_interruptible(sk->sleep);
- sock_wake_async(sk->socket,1);
+ sock_wake_async(sk->socket,1, POLL_IN);
}
return(1);
}
@@ -1965,6 +1965,7 @@ static void tcp_check_urg(struct sock * sk, struct tcphdr * th)
kill_proc(sk->proc, SIGURG, 1);
else
kill_pg(-sk->proc, SIGURG, 1);
+ sock_wake_async(sk->socket, 3, POLL_PRI);
}
/* We may be adding urgent data when the last byte read was
@@ -2201,7 +2202,7 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
* this frame, the pred_flags won't match up. -DaveM
*/
wake_up_interruptible(sk->sleep);
- sock_wake_async(sk->socket,1);
+ sock_wake_async(sk->socket,1, POLL_IN);
tcp_delack_estimator(tp);
tcp_remember_ack(tp, th, skb);
@@ -2760,7 +2761,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
if(!sk->dead) {
wake_up_interruptible(sk->sleep);
- sock_wake_async(sk->socket, 0);
+ sock_wake_async(sk->socket, 0, POLL_IN);
}
return -1;
}
@@ -3017,7 +3018,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
*/
if (!sk->dead && sk->sleep) {
wake_up_interruptible(sk->sleep);
- sock_wake_async(sk->socket, 1);
+ sock_wake_async(sk->socket,0,POLL_OUT);
}
tp->snd_una = TCP_SKB_CB(skb)->ack_seq;