firewire: sbp2: replace a GFP_ATOMIC allocation
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 4 Mar 2012 13:23:00 +0000 (14:23 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 10 Mar 2012 16:41:19 +0000 (17:41 +0100)
sbp2_send_management_orb() is called by sbp2_login, sbp2_reconnect, and
sbp2_remove, all which are able to sleep during memory allocations.
Actually, sbp2_send_management_orb() itself is a sleeping function.

Login and remove could allocate with GFP_KERNEL but reconnect needs
GFP_NOIO to ensure progress in low memory situations.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/sbp2.c

index cc5828e..1bd78d8 100644 (file)
@@ -569,7 +569,7 @@ static int sbp2_send_management_orb(struct sbp2_logical_unit *lu, int node_id,
        if (function == SBP2_LOGOUT_REQUEST && fw_device_is_shutdown(device))
                return 0;
 
-       orb = kzalloc(sizeof(*orb), GFP_ATOMIC);
+       orb = kzalloc(sizeof(*orb), GFP_NOIO);
        if (orb == NULL)
                return -ENOMEM;