s390/qdio: don't allocate *aob array with GFP_ATOMIC
authorJulian Wiedmann <jwi@linux.ibm.com>
Wed, 5 Feb 2020 08:41:42 +0000 (09:41 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 11 Feb 2020 19:14:12 +0000 (20:14 +0100)
The only way to reach this allocation is via

qdio_establish()
  qdio_detect_hsicq()
    qdio_enable_async_operation()

and since qdio_establish() uses wait_event_*() just a few lines ealier,
we can trust that it certainly is never called from atomic context.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/cio/qdio_setup.c

index dc430bd..3ab8e80 100644 (file)
@@ -536,7 +536,7 @@ void qdio_print_subchannel_info(struct qdio_irq *irq_ptr,
 int qdio_enable_async_operation(struct qdio_output_q *outq)
 {
        outq->aobs = kcalloc(QDIO_MAX_BUFFERS_PER_Q, sizeof(struct qaob *),
-                            GFP_ATOMIC);
+                            GFP_KERNEL);
        if (!outq->aobs) {
                outq->use_cq = 0;
                return -ENOMEM;