Re: [PATCH 2/2] EDAC: i7core: fix memleaks and use-after-free on probe and remove

2018-06-18 Thread Borislav Petkov
On Tue, Jun 12, 2018 at 02:43:35PM +0200, Johan Hovold wrote:
> Make sure to free and deregister the addrmatch and chancounts devices
> allocated during probe in all error paths. Also fix use-after-free in a
> probe error path and in the remove success path where the devices were
> being put before before deregistration.
> 
> Fixes: 356f0a30860d ("i7core_edac: change the mem allocation scheme to make 
> Documentation/kobject.txt happy")
> Cc: stable  # 3.6
> Cc: Mauro Carvalho Chehab 
> Signed-off-by: Johan Hovold 
> ---
>  drivers/edac/i7core_edac.c | 22 +++---
>  1 file changed, 15 insertions(+), 7 deletions(-)

Both applied, thanks.

-- 
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.


Re: [PATCH 2/2] EDAC: i7core: fix memleaks and use-after-free on probe and remove

2018-06-18 Thread Borislav Petkov
On Tue, Jun 12, 2018 at 02:43:35PM +0200, Johan Hovold wrote:
> Make sure to free and deregister the addrmatch and chancounts devices
> allocated during probe in all error paths. Also fix use-after-free in a
> probe error path and in the remove success path where the devices were
> being put before before deregistration.
> 
> Fixes: 356f0a30860d ("i7core_edac: change the mem allocation scheme to make 
> Documentation/kobject.txt happy")
> Cc: stable  # 3.6
> Cc: Mauro Carvalho Chehab 
> Signed-off-by: Johan Hovold 
> ---
>  drivers/edac/i7core_edac.c | 22 +++---
>  1 file changed, 15 insertions(+), 7 deletions(-)

Both applied, thanks.

-- 
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.


[PATCH 2/2] EDAC: i7core: fix memleaks and use-after-free on probe and remove

2018-06-12 Thread Johan Hovold
Make sure to free and deregister the addrmatch and chancounts devices
allocated during probe in all error paths. Also fix use-after-free in a
probe error path and in the remove success path where the devices were
being put before before deregistration.

Fixes: 356f0a30860d ("i7core_edac: change the mem allocation scheme to make 
Documentation/kobject.txt happy")
Cc: stable  # 3.6
Cc: Mauro Carvalho Chehab 
Signed-off-by: Johan Hovold 
---
 drivers/edac/i7core_edac.c | 22 +++---
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index 8c5540160a23..23e441dbaf49 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -1177,15 +1177,14 @@ static int i7core_create_sysfs_devices(struct 
mem_ctl_info *mci)
 
rc = device_add(pvt->addrmatch_dev);
if (rc < 0)
-   return rc;
+   goto err_put_addrmatch;
 
if (!pvt->is_registered) {
pvt->chancounts_dev = kzalloc(sizeof(*pvt->chancounts_dev),
  GFP_KERNEL);
if (!pvt->chancounts_dev) {
-   put_device(pvt->addrmatch_dev);
-   device_del(pvt->addrmatch_dev);
-   return -ENOMEM;
+   rc = -ENOMEM;
+   goto err_del_addrmatch;
}
 
pvt->chancounts_dev->type = _channel_counts_type;
@@ -1199,9 +1198,18 @@ static int i7core_create_sysfs_devices(struct 
mem_ctl_info *mci)
 
rc = device_add(pvt->chancounts_dev);
if (rc < 0)
-   return rc;
+   goto err_put_chancounts;
}
return 0;
+
+err_put_chancounts:
+   put_device(pvt->chancounts_dev);
+err_del_addrmatch:
+   device_del(pvt->addrmatch_dev);
+err_put_addrmatch:
+   put_device(pvt->addrmatch_dev);
+
+   return rc;
 }
 
 static void i7core_delete_sysfs_devices(struct mem_ctl_info *mci)
@@ -1211,11 +1219,11 @@ static void i7core_delete_sysfs_devices(struct 
mem_ctl_info *mci)
edac_dbg(1, "\n");
 
if (!pvt->is_registered) {
-   put_device(pvt->chancounts_dev);
device_del(pvt->chancounts_dev);
+   put_device(pvt->chancounts_dev);
}
-   put_device(pvt->addrmatch_dev);
device_del(pvt->addrmatch_dev);
+   put_device(pvt->addrmatch_dev);
 }
 
 /
-- 
2.17.1



[PATCH 2/2] EDAC: i7core: fix memleaks and use-after-free on probe and remove

2018-06-12 Thread Johan Hovold
Make sure to free and deregister the addrmatch and chancounts devices
allocated during probe in all error paths. Also fix use-after-free in a
probe error path and in the remove success path where the devices were
being put before before deregistration.

Fixes: 356f0a30860d ("i7core_edac: change the mem allocation scheme to make 
Documentation/kobject.txt happy")
Cc: stable  # 3.6
Cc: Mauro Carvalho Chehab 
Signed-off-by: Johan Hovold 
---
 drivers/edac/i7core_edac.c | 22 +++---
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index 8c5540160a23..23e441dbaf49 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -1177,15 +1177,14 @@ static int i7core_create_sysfs_devices(struct 
mem_ctl_info *mci)
 
rc = device_add(pvt->addrmatch_dev);
if (rc < 0)
-   return rc;
+   goto err_put_addrmatch;
 
if (!pvt->is_registered) {
pvt->chancounts_dev = kzalloc(sizeof(*pvt->chancounts_dev),
  GFP_KERNEL);
if (!pvt->chancounts_dev) {
-   put_device(pvt->addrmatch_dev);
-   device_del(pvt->addrmatch_dev);
-   return -ENOMEM;
+   rc = -ENOMEM;
+   goto err_del_addrmatch;
}
 
pvt->chancounts_dev->type = _channel_counts_type;
@@ -1199,9 +1198,18 @@ static int i7core_create_sysfs_devices(struct 
mem_ctl_info *mci)
 
rc = device_add(pvt->chancounts_dev);
if (rc < 0)
-   return rc;
+   goto err_put_chancounts;
}
return 0;
+
+err_put_chancounts:
+   put_device(pvt->chancounts_dev);
+err_del_addrmatch:
+   device_del(pvt->addrmatch_dev);
+err_put_addrmatch:
+   put_device(pvt->addrmatch_dev);
+
+   return rc;
 }
 
 static void i7core_delete_sysfs_devices(struct mem_ctl_info *mci)
@@ -1211,11 +1219,11 @@ static void i7core_delete_sysfs_devices(struct 
mem_ctl_info *mci)
edac_dbg(1, "\n");
 
if (!pvt->is_registered) {
-   put_device(pvt->chancounts_dev);
device_del(pvt->chancounts_dev);
+   put_device(pvt->chancounts_dev);
}
-   put_device(pvt->addrmatch_dev);
device_del(pvt->addrmatch_dev);
+   put_device(pvt->addrmatch_dev);
 }
 
 /
-- 
2.17.1