Merge tag 'v3.10.95' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / irda / af_irda.c
index d28e7f014cc639779a4557203b4b2ba2f7e63927..f8133ff5b081840662a728373df5c40f2e165da1 100644 (file)
@@ -305,8 +305,7 @@ static void irda_connect_response(struct irda_sock *self)
 
        IRDA_DEBUG(2, "%s()\n", __func__);
 
-       skb = alloc_skb(TTP_MAX_HEADER + TTP_SAR_HEADER,
-                       GFP_ATOMIC);
+       skb = alloc_skb(TTP_MAX_HEADER + TTP_SAR_HEADER, GFP_KERNEL);
        if (skb == NULL) {
                IRDA_DEBUG(0, "%s() Unable to allocate sk_buff!\n",
                           __func__);
@@ -1106,6 +1105,9 @@ static int irda_create(struct net *net, struct socket *sock, int protocol,
 
        IRDA_DEBUG(2, "%s()\n", __func__);
 
+       if (protocol < 0 || protocol > SK_PROTOCOL_MAX)
+               return -EINVAL;
+
        if (net != &init_net)
                return -EAFNOSUPPORT;
 
@@ -1120,7 +1122,7 @@ static int irda_create(struct net *net, struct socket *sock, int protocol,
        }
 
        /* Allocate networking socket */
-       sk = sk_alloc(net, PF_IRDA, GFP_ATOMIC, &irda_proto);
+       sk = sk_alloc(net, PF_IRDA, GFP_KERNEL, &irda_proto);
        if (sk == NULL)
                return -ENOMEM;
 
@@ -1450,8 +1452,6 @@ static int irda_recvmsg_stream(struct kiocb *iocb, struct socket *sock,
        target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
        timeo = sock_rcvtimeo(sk, noblock);
 
-       msg->msg_namelen = 0;
-
        do {
                int chunk;
                struct sk_buff *skb = skb_dequeue(&sk->sk_receive_queue);