[PATCH] gpib: ines: fix memory leak on probe failure
From: Guangshuo Li
Date: Sun Sep 13 2026 - 02:29:35 EST
ines_gpib_probe() allocates a local_info structure and stores it in
link->priv before calling ines_gpib_config().
If ines_gpib_config() fails, it calls ines_gpib_release(), which only
disables the PCMCIA device and does not free the local_info structure.
Since probe then returns an error, the remove callback is not called
and the allocation is leaked.
Handle the configuration failure in ines_gpib_probe() by freeing the
local_info structure and clearing link->priv before returning the
error.
This issue was found by manual code inspection.
Fixes: bb1bd92fa0f2c ("staging: gpib: Add ines GPIB driver")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Guangshuo Li <lgs201920130244@xxxxxxxxx>
---
drivers/gpib/ines/ines_gpib.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpib/ines/ines_gpib.c b/drivers/gpib/ines/ines_gpib.c
index 6cd6ff596fda..6d09dff5e797 100644
--- a/drivers/gpib/ines/ines_gpib.c
+++ b/drivers/gpib/ines/ines_gpib.c
@@ -1143,6 +1143,7 @@ struct local_info {
static int ines_gpib_probe(struct pcmcia_device *link)
{
struct local_info *info;
+ int ret;
// int ret, i;
@@ -1165,7 +1166,13 @@ static int ines_gpib_probe(struct pcmcia_device *link)
/* Register with Card Services */
curr_dev = link;
- return ines_gpib_config(link);
+ ret = ines_gpib_config(link);
+ if (ret) {
+ kfree(info);
+ link->priv = NULL;
+ }
+
+ return ret;
}
/*
--
2.43.0