aboutsummaryrefslogtreecommitdiffstats
path: root/net/unix/af_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/unix/af_unix.c')
-rw-r--r--net/unix/af_unix.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index c323cc6a28b0..2b4cc2eea5b3 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -566,7 +566,7 @@ static struct sock * unix_create1(struct socket *sock)
566 u->mnt = NULL; 566 u->mnt = NULL;
567 spin_lock_init(&u->lock); 567 spin_lock_init(&u->lock);
568 atomic_set(&u->inflight, sock ? 0 : -1); 568 atomic_set(&u->inflight, sock ? 0 : -1);
569 init_MUTEX(&u->readsem); /* single task reading lock */ 569 mutex_init(&u->readlock); /* single task reading lock */
570 init_waitqueue_head(&u->peer_wait); 570 init_waitqueue_head(&u->peer_wait);
571 unix_insert_socket(unix_sockets_unbound, sk); 571 unix_insert_socket(unix_sockets_unbound, sk);
572out: 572out:
@@ -623,7 +623,7 @@ static int unix_autobind(struct socket *sock)
623 struct unix_address * addr; 623 struct unix_address * addr;
624 int err; 624 int err;
625 625
626 down(&u->readsem); 626 mutex_lock(&u->readlock);
627 627
628 err = 0; 628 err = 0;
629 if (u->addr) 629 if (u->addr)
@@ -661,7 +661,7 @@ retry:
661 spin_unlock(&unix_table_lock); 661 spin_unlock(&unix_table_lock);
662 err = 0; 662 err = 0;
663 663
664out: up(&u->readsem); 664out: mutex_unlock(&u->readlock);
665 return err; 665 return err;
666} 666}
667 667
@@ -744,7 +744,7 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
744 goto out; 744 goto out;
745 addr_len = err; 745 addr_len = err;
746 746
747 down(&u->readsem); 747 mutex_lock(&u->readlock);
748 748
749 err = -EINVAL; 749 err = -EINVAL;
750 if (u->addr) 750 if (u->addr)
@@ -816,7 +816,7 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
816out_unlock: 816out_unlock:
817 spin_unlock(&unix_table_lock); 817 spin_unlock(&unix_table_lock);
818out_up: 818out_up:
819 up(&u->readsem); 819 mutex_unlock(&u->readlock);
820out: 820out:
821 return err; 821 return err;
822 822
@@ -1427,15 +1427,15 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
1427 while(sent < len) 1427 while(sent < len)
1428 { 1428 {
1429 /* 1429 /*
1430 * Optimisation for the fact that under 0.01% of X messages typically 1430 * Optimisation for the fact that under 0.01% of X
1431 * need breaking up. 1431 * messages typically need breaking up.
1432 */ 1432 */
1433 1433
1434 size=len-sent; 1434 size = len-sent;
1435 1435
1436 /* Keep two messages in the pipe so it schedules better */ 1436 /* Keep two messages in the pipe so it schedules better */
1437 if (size > sk->sk_sndbuf / 2 - 64) 1437 if (size > ((sk->sk_sndbuf >> 1) - 64))
1438 size = sk->sk_sndbuf / 2 - 64; 1438 size = (sk->sk_sndbuf >> 1) - 64;
1439 1439
1440 if (size > SKB_MAX_ALLOC) 1440 if (size > SKB_MAX_ALLOC)
1441 size = SKB_MAX_ALLOC; 1441 size = SKB_MAX_ALLOC;
@@ -1545,7 +1545,7 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock,
1545 1545
1546 msg->msg_namelen = 0; 1546 msg->msg_namelen = 0;
1547 1547
1548 down(&u->readsem); 1548 mutex_lock(&u->readlock);
1549 1549
1550 skb = skb_recv_datagram(sk, flags, noblock, &err); 1550 skb = skb_recv_datagram(sk, flags, noblock, &err);
1551 if (!skb) 1551 if (!skb)
@@ -1600,7 +1600,7 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock,
1600out_free: 1600out_free:
1601 skb_free_datagram(sk,skb); 1601 skb_free_datagram(sk,skb);
1602out_unlock: 1602out_unlock:
1603 up(&u->readsem); 1603 mutex_unlock(&u->readlock);
1604out: 1604out:
1605 return err; 1605 return err;
1606} 1606}
@@ -1676,7 +1676,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
1676 memset(&tmp_scm, 0, sizeof(tmp_scm)); 1676 memset(&tmp_scm, 0, sizeof(tmp_scm));
1677 } 1677 }
1678 1678
1679 down(&u->readsem); 1679 mutex_lock(&u->readlock);
1680 1680
1681 do 1681 do
1682 { 1682 {
@@ -1700,7 +1700,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
1700 err = -EAGAIN; 1700 err = -EAGAIN;
1701 if (!timeo) 1701 if (!timeo)
1702 break; 1702 break;
1703 up(&u->readsem); 1703 mutex_unlock(&u->readlock);
1704 1704
1705 timeo = unix_stream_data_wait(sk, timeo); 1705 timeo = unix_stream_data_wait(sk, timeo);
1706 1706
@@ -1708,7 +1708,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
1708 err = sock_intr_errno(timeo); 1708 err = sock_intr_errno(timeo);
1709 goto out; 1709 goto out;
1710 } 1710 }
1711 down(&u->readsem); 1711 mutex_lock(&u->readlock);
1712 continue; 1712 continue;
1713 } 1713 }
1714 1714
@@ -1774,7 +1774,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock,
1774 } 1774 }
1775 } while (size); 1775 } while (size);
1776 1776
1777 up(&u->readsem); 1777 mutex_unlock(&u->readlock);
1778 scm_recv(sock, msg, siocb->scm, flags); 1778 scm_recv(sock, msg, siocb->scm, flags);
1779out: 1779out:
1780 return copied ? : err; 1780 return copied ? : err;