Staging: batman-adv: Don't allocate icmp packet with GFP_KERNEL
authorSven Eckelmann <sven.eckelmann@gmx.de>
Sat, 22 May 2010 15:48:47 +0000 (17:48 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 4 Jun 2010 20:38:56 +0000 (13:38 -0700)
A new buffer for a packet is created when a icmp packet is received.
This happens in a context with disabled irq. Thus we are not allowed to
sleep or call function which might sleep. kmalloc must be called with
GFP_ATOMIC instead of GFP_KERNEL to ensure that it does not sleep.

Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/device.c

index ad82ec4a48562d9f44fcba08cd767931764af220..7eb6559e03158d07eada6eccddf882ddaa2ec537 100644 (file)
@@ -309,7 +309,7 @@ void bat_device_add_packet(struct device_client *device_client,
        struct device_packet *device_packet;
        unsigned long flags;
 
-       device_packet = kmalloc(sizeof(struct device_packet), GFP_KERNEL);
+       device_packet = kmalloc(sizeof(struct device_packet), GFP_ATOMIC);
 
        if (!device_packet)
                return;