From 1dc751a5b51d730a98b528672f91d7a38aca5123 Mon Sep 17 00:00:00 2001 From: Ji-Hun Kim Date: Thu, 5 Apr 2018 16:09:20 +0900 Subject: [PATCH] staging: vt6655: add handling memory leak on vnt_start() There was no code for handling memory leaks of device_init_rings() and request_irq(). It needs to free allocated memory in the device_init_rings() , when request_irq() would be failed. Add freeing sequences of irq and device init rings. Signed-off-by: Ji-Hun Kim Reviewed-by: Dan Carpenter Signed-off-by: Greg Kroah-Hartman --- drivers/staging/vt6655/device_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c index 700c03c52f70..1ab0e8562d40 100644 --- a/drivers/staging/vt6655/device_main.c +++ b/drivers/staging/vt6655/device_main.c @@ -1237,13 +1237,13 @@ static int vnt_start(struct ieee80211_hw *hw) IRQF_SHARED, "vt6655", priv); if (ret) { dev_dbg(&priv->pcid->dev, "failed to start irq\n"); - return ret; + goto err_free_rings; } dev_dbg(&priv->pcid->dev, "call device init rd0 ring\n"); ret = device_init_rd0_ring(priv); if (ret) - return ret; + goto err_free_irq; ret = device_init_rd1_ring(priv); if (ret) goto err_free_rd0_ring; @@ -1269,6 +1269,10 @@ err_free_rd1_ring: device_free_rd1_ring(priv); err_free_rd0_ring: device_free_rd0_ring(priv); +err_free_irq: + free_irq(priv->pcid->irq, priv); +err_free_rings: + device_free_rings(priv); return ret; } -- 2.11.0