From 7aeeeb926c355a9a5bc7a96bae7d5ada44f1d2e9 Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Mon, 5 Dec 2022 09:09:33 +0100 Subject: [PATCH] s390/raw3270: remove BUG_ON in raw3270_request_reset() WARN_ON_ONCE if list is not empty, and return an error code instead. Signed-off-by: Sven Schnelle Acked-by: Heiko Carstens Signed-off-by: Heiko Carstens --- drivers/s390/char/raw3270.c | 10 +++++++--- drivers/s390/char/raw3270.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index 130295f..2939034 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c @@ -180,15 +180,17 @@ EXPORT_SYMBOL(raw3270_request_free); /* * Reset request to initial state. */ -void raw3270_request_reset(struct raw3270_request *rq) +int raw3270_request_reset(struct raw3270_request *rq) { - BUG_ON(!list_empty(&rq->list)); + if (WARN_ON_ONCE(!list_empty(&rq->list))) + return -EBUSY; rq->ccw.cmd_code = 0; rq->ccw.count = 0; rq->ccw.cda = __pa(rq->buffer); rq->ccw.flags = CCW_FLAG_SLI; rq->rescnt = 0; rq->rc = 0; + return 0; } EXPORT_SYMBOL(raw3270_request_reset); @@ -289,7 +291,9 @@ int raw3270_start_request(struct raw3270_view *view, struct raw3270_request *rq, { int rc; - raw3270_request_reset(rq); + rc = raw3270_request_reset(rq); + if (rc) + return rc; raw3270_request_set_cmd(rq, cmd); rc = raw3270_request_add_data(rq, data, len); if (rc) diff --git a/drivers/s390/char/raw3270.h b/drivers/s390/char/raw3270.h index 47b4177..e8c71ef 100644 --- a/drivers/s390/char/raw3270.h +++ b/drivers/s390/char/raw3270.h @@ -120,7 +120,7 @@ struct raw3270_request { struct raw3270_request *raw3270_request_alloc(size_t size); void raw3270_request_free(struct raw3270_request *rq); -void raw3270_request_reset(struct raw3270_request *rq); +int raw3270_request_reset(struct raw3270_request *rq); void raw3270_request_set_cmd(struct raw3270_request *rq, u8 cmd); int raw3270_request_add_data(struct raw3270_request *rq, void *data, size_t size); void raw3270_request_set_data(struct raw3270_request *rq, void *data, size_t size); -- 2.7.4