diff options
Diffstat (limited to 'net/x25/af_x25.c')
-rw-r--r-- | net/x25/af_x25.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c index f6a8f175b4f5..bd6fce31a738 100644 --- a/net/x25/af_x25.c +++ b/net/x25/af_x25.c | |||
@@ -688,7 +688,6 @@ static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
688 | struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr; | 688 | struct sockaddr_x25 *addr = (struct sockaddr_x25 *)uaddr; |
689 | int len, i, rc = 0; | 689 | int len, i, rc = 0; |
690 | 690 | ||
691 | lock_kernel(); | ||
692 | if (!sock_flag(sk, SOCK_ZAPPED) || | 691 | if (!sock_flag(sk, SOCK_ZAPPED) || |
693 | addr_len != sizeof(struct sockaddr_x25) || | 692 | addr_len != sizeof(struct sockaddr_x25) || |
694 | addr->sx25_family != AF_X25) { | 693 | addr->sx25_family != AF_X25) { |
@@ -704,12 +703,13 @@ static int x25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
704 | } | 703 | } |
705 | } | 704 | } |
706 | 705 | ||
706 | lock_sock(sk); | ||
707 | x25_sk(sk)->source_addr = addr->sx25_addr; | 707 | x25_sk(sk)->source_addr = addr->sx25_addr; |
708 | x25_insert_socket(sk); | 708 | x25_insert_socket(sk); |
709 | sock_reset_flag(sk, SOCK_ZAPPED); | 709 | sock_reset_flag(sk, SOCK_ZAPPED); |
710 | release_sock(sk); | ||
710 | SOCK_DEBUG(sk, "x25_bind: socket is bound\n"); | 711 | SOCK_DEBUG(sk, "x25_bind: socket is bound\n"); |
711 | out: | 712 | out: |
712 | unlock_kernel(); | ||
713 | return rc; | 713 | return rc; |
714 | } | 714 | } |
715 | 715 | ||