ipw2100: Use GFP_KERNEL instead of GFP_ATOMIC in some memory allocation
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Wed, 22 Jul 2020 10:17:01 +0000 (12:17 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Sun, 2 Aug 2020 15:19:03 +0000 (18:19 +0300)
The call chain is:
   ipw2100_pci_init_one            (the probe function)
     --> ipw2100_queues_allocate
       --> ipw2100_tx_allocate

No lock is taken in the between.
So it is safe to use GFP_KERNEL in 'ipw2100_tx_allocate()'.

BTW, 'ipw2100_queues_allocate()' also calls 'ipw2100_msg_allocate()' which
already allocates some memory using GFP_KERNEL.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200722101701.26126-1-christophe.jaillet@wanadoo.fr
drivers/net/wireless/intel/ipw2x00/ipw2100.c

index 83d2f2acc0de49c6d89321997c93b3cd87501ad0..699deca745a2bb6c7c635b5e64dd3b8641d3fcf7 100644 (file)
@@ -4430,7 +4430,7 @@ static int ipw2100_tx_allocate(struct ipw2100_priv *priv)
 
        priv->tx_buffers = kmalloc_array(TX_PENDED_QUEUE_LENGTH,
                                         sizeof(struct ipw2100_tx_packet),
-                                        GFP_ATOMIC);
+                                        GFP_KERNEL);
        if (!priv->tx_buffers) {
                bd_queue_free(priv, &priv->tx_queue);
                return -ENOMEM;