[PATCH v2] s390: raw3270: Handle allocation failures
Triet Hoang <[email protected]>
| Newsgroups | org.kernel.vger.linux-s390,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Check the return values of kzalloc_obj() and kzalloc() before using the allocated memory. Free the allocated resources on subsequent initialization failures to avoid leaking memory. Signed-off-by: Triet Hoang <[email protected]> --- Changes in v2: - Destroy the console device on allocation failure. - Do not free rp after raw3270_setup_device() success. --- drivers/s390/char/raw3270.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index aa9c4d81225c..ff397396b440 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c @@ -814,10 +814,23 @@ struct raw3270 __init *raw3270_setup_console(void) return ERR_CAST(cdev); rp = kzalloc_obj(*rp, GFP_KERNEL | GFP_DMA); + if (!rp) { + ccw_device_destroy_console(cdev); + return ERR_PTR(-ENOMEM); + } ascebc = kzalloc(256, GFP_KERNEL); + if (!ascebc) { + ccw_device_destroy_console(cdev); + kfree(rp); + return ERR_PTR(-ENOMEM); + } rc = raw3270_setup_device(cdev, rp, ascebc); - if (rc) + if (rc) { + ccw_device_destroy_console(cdev); + kfree(rp->ascebc); + kfree(rp); return ERR_PTR(rc); + } set_bit(RAW3270_FLAGS_CONSOLE, &rp->flags); rc = ccw_device_enable_console(cdev); -- 2.53.0