summaryrefslogtreecommitdiff
path: root/net/irda/af_irda.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-06-12 11:27:22 +0200
committerIngo Molnar <mingo@elte.hu>2008-06-12 11:27:22 +0200
commitbb6dfb32f90094fea647e1f27d994a8b6ddd2766 (patch)
treee63681727543bcc3251bbc82b81a9cc822cc3f5e /net/irda/af_irda.c
parent4f384f8bcdb5d618a0a68fb84c809e602c798b8f (diff)
parent5e70b7f3c24468bb1635b295945edb48ecd9656a (diff)
Merge branch 'linus' into x86/gart
Diffstat (limited to 'net/irda/af_irda.c')
-rw-r--r--net/irda/af_irda.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index ae54b20d0470..3eb5bcc75f99 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -1093,11 +1093,6 @@ static int irda_create(struct net *net, struct socket *sock, int protocol)
init_waitqueue_head(&self->query_wait);
- /* Initialise networking socket struct */
- sock_init_data(sock, sk); /* Note : set sk->sk_refcnt to 1 */
- sk->sk_family = PF_IRDA;
- sk->sk_protocol = protocol;
-
switch (sock->type) {
case SOCK_STREAM:
sock->ops = &irda_stream_ops;
@@ -1124,13 +1119,20 @@ static int irda_create(struct net *net, struct socket *sock, int protocol)
self->max_sdu_size_rx = TTP_SAR_UNBOUND;
break;
default:
+ sk_free(sk);
return -ESOCKTNOSUPPORT;
}
break;
default:
+ sk_free(sk);
return -ESOCKTNOSUPPORT;
}
+ /* Initialise networking socket struct */
+ sock_init_data(sock, sk); /* Note : set sk->sk_refcnt to 1 */
+ sk->sk_family = PF_IRDA;
+ sk->sk_protocol = protocol;
+
/* Register as a client with IrLMP */
self->ckey = irlmp_register_client(0, NULL, NULL, NULL);
self->mask.word = 0xffff;