From: Julian Wiedmann <jwi@linux.ibm.com>
Date: Wed, 5 Feb 2020 09:41:42 +0100
Subject: s390/qdio: don't allocate *aob array with GFP_ATOMIC
Git-commit: 11f0446534679e0a77441a19a65ed8b4a3d475f0
Patch-mainline: v5.6-rc2
References: jsc#SLE-13690
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>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
drivers/s390/cio/qdio_setup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/s390/cio/qdio_setup.c
+++ b/drivers/s390/cio/qdio_setup.c
@@ -536,7 +536,7 @@ void qdio_print_subchannel_info(struct q
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;