diff options
Diffstat (limited to 'net/decnet/af_decnet.c')
-rw-r--r-- | net/decnet/af_decnet.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index fc2efe899e91..3c23ab33dbc0 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c | |||
@@ -451,7 +451,7 @@ static void dn_destruct(struct sock *sk) | |||
451 | 451 | ||
452 | static int dn_memory_pressure; | 452 | static int dn_memory_pressure; |
453 | 453 | ||
454 | static void dn_enter_memory_pressure(void) | 454 | static void dn_enter_memory_pressure(struct sock *sk) |
455 | { | 455 | { |
456 | if (!dn_memory_pressure) { | 456 | if (!dn_memory_pressure) { |
457 | dn_memory_pressure = 1; | 457 | dn_memory_pressure = 1; |
@@ -1719,6 +1719,8 @@ static int dn_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1719 | * See if there is data ready to read, sleep if there isn't | 1719 | * See if there is data ready to read, sleep if there isn't |
1720 | */ | 1720 | */ |
1721 | for(;;) { | 1721 | for(;;) { |
1722 | DEFINE_WAIT(wait); | ||
1723 | |||
1722 | if (sk->sk_err) | 1724 | if (sk->sk_err) |
1723 | goto out; | 1725 | goto out; |
1724 | 1726 | ||
@@ -1748,14 +1750,11 @@ static int dn_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1748 | goto out; | 1750 | goto out; |
1749 | } | 1751 | } |
1750 | 1752 | ||
1751 | set_bit(SOCK_ASYNC_WAITDATA, &sock->flags); | 1753 | prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE); |
1752 | SOCK_SLEEP_PRE(sk) | 1754 | set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); |
1753 | 1755 | sk_wait_event(sk, &timeo, dn_data_ready(sk, queue, flags, target)); | |
1754 | if (!dn_data_ready(sk, queue, flags, target)) | 1756 | clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); |
1755 | schedule(); | 1757 | finish_wait(sk->sk_sleep, &wait); |
1756 | |||
1757 | SOCK_SLEEP_POST(sk) | ||
1758 | clear_bit(SOCK_ASYNC_WAITDATA, &sock->flags); | ||
1759 | } | 1758 | } |
1760 | 1759 | ||
1761 | for(skb = queue->next; skb != (struct sk_buff *)queue; skb = nskb) { | 1760 | for(skb = queue->next; skb != (struct sk_buff *)queue; skb = nskb) { |
@@ -2002,18 +2001,19 @@ static int dn_sendmsg(struct kiocb *iocb, struct socket *sock, | |||
2002 | * size. | 2001 | * size. |
2003 | */ | 2002 | */ |
2004 | if (dn_queue_too_long(scp, queue, flags)) { | 2003 | if (dn_queue_too_long(scp, queue, flags)) { |
2004 | DEFINE_WAIT(wait); | ||
2005 | |||
2005 | if (flags & MSG_DONTWAIT) { | 2006 | if (flags & MSG_DONTWAIT) { |
2006 | err = -EWOULDBLOCK; | 2007 | err = -EWOULDBLOCK; |
2007 | goto out; | 2008 | goto out; |
2008 | } | 2009 | } |
2009 | 2010 | ||
2010 | SOCK_SLEEP_PRE(sk) | 2011 | prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE); |
2011 | 2012 | set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); | |
2012 | if (dn_queue_too_long(scp, queue, flags)) | 2013 | sk_wait_event(sk, &timeo, |
2013 | schedule(); | 2014 | !dn_queue_too_long(scp, queue, flags)); |
2014 | 2015 | clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); | |
2015 | SOCK_SLEEP_POST(sk) | 2016 | finish_wait(sk->sk_sleep, &wait); |
2016 | |||
2017 | continue; | 2017 | continue; |
2018 | } | 2018 | } |
2019 | 2019 | ||
@@ -2089,7 +2089,7 @@ static int dn_device_event(struct notifier_block *this, unsigned long event, | |||
2089 | { | 2089 | { |
2090 | struct net_device *dev = (struct net_device *)ptr; | 2090 | struct net_device *dev = (struct net_device *)ptr; |
2091 | 2091 | ||
2092 | if (dev_net(dev) != &init_net) | 2092 | if (!net_eq(dev_net(dev), &init_net)) |
2093 | return NOTIFY_DONE; | 2093 | return NOTIFY_DONE; |
2094 | 2094 | ||
2095 | switch(event) { | 2095 | switch(event) { |