ipwireless: don't oops if we run out of space
authorAlan Cox <alan@linux.intel.com>
Thu, 1 Nov 2012 16:45:49 +0000 (16:45 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Nov 2012 00:53:15 +0000 (16:53 -0800)
Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=49851

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/ipwireless/network.c

index 57102e66165a99e392b3c5675e68774507440aee..c0dfb642383b29015a81c760a12b06b0452aaa65 100644 (file)
@@ -352,6 +352,8 @@ static struct sk_buff *ipw_packet_received_skb(unsigned char *data,
        }
 
        skb = dev_alloc_skb(length + 4);
+       if (skb == NULL)
+               return NULL;
        skb_reserve(skb, 2);
        memcpy(skb_put(skb, length), data, length);
 
@@ -397,7 +399,8 @@ void ipwireless_network_packet_received(struct ipw_network *network,
 
                                /* Send the data to the ppp_generic module. */
                                skb = ipw_packet_received_skb(data, length);
-                               ppp_input(network->ppp_channel, skb);
+                               if (skb)
+                                       ppp_input(network->ppp_channel, skb);
                        } else
                                spin_unlock_irqrestore(&network->lock,
                                                flags);