]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Feb 2018 14:18:41 +0000 (15:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Feb 2018 14:18:41 +0000 (15:18 +0100)
added patches:
ipmi_si-fix-error-handling-of-platform-device.patch

queue-4.15/ipmi_si-fix-error-handling-of-platform-device.patch [new file with mode: 0644]
queue-4.15/series

diff --git a/queue-4.15/ipmi_si-fix-error-handling-of-platform-device.patch b/queue-4.15/ipmi_si-fix-error-handling-of-platform-device.patch
new file mode 100644 (file)
index 0000000..4e95b50
--- /dev/null
@@ -0,0 +1,55 @@
+From 174134ac760275457bb0d1560a0dbe6cf8a12ad6 Mon Sep 17 00:00:00 2001
+From: Corey Minyard <cminyard@mvista.com>
+Date: Mon, 27 Nov 2017 08:18:33 -0600
+Subject: ipmi_si: Fix error handling of platform device
+
+From: Corey Minyard <cminyard@mvista.com>
+
+commit 174134ac760275457bb0d1560a0dbe6cf8a12ad6 upstream.
+
+Cleanup of platform devices created by the IPMI driver was not
+being done correctly and could result in a memory leak.  So
+create a local boolean to know how to clean up those platform
+devices.
+
+Reported-by: David Binderman <dcb314@hotmail.com>
+Signed-off-by: Corey Minyard <cminyard@mvista.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/char/ipmi/ipmi_si_intf.c |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/char/ipmi/ipmi_si_intf.c
++++ b/drivers/char/ipmi/ipmi_si_intf.c
+@@ -2045,6 +2045,7 @@ static int try_smi_init(struct smi_info
+       int rv = 0;
+       int i;
+       char *init_name = NULL;
++      bool platform_device_registered = false;
+       pr_info(PFX "Trying %s-specified %s state machine at %s address 0x%lx, slave address 0x%x, irq %d\n",
+               ipmi_addr_src_to_str(new_smi->io.addr_source),
+@@ -2173,6 +2174,7 @@ static int try_smi_init(struct smi_info
+                               rv);
+                       goto out_err;
+               }
++              platform_device_registered = true;
+       }
+       dev_set_drvdata(new_smi->io.dev, new_smi);
+@@ -2279,10 +2281,11 @@ out_err:
+       }
+       if (new_smi->pdev) {
+-              platform_device_unregister(new_smi->pdev);
++              if (platform_device_registered)
++                      platform_device_unregister(new_smi->pdev);
++              else
++                      platform_device_put(new_smi->pdev);
+               new_smi->pdev = NULL;
+-      } else if (new_smi->pdev) {
+-              platform_device_put(new_smi->pdev);
+       }
+       kfree(init_name);
index 09fcb2a96acd8c2f7fdb88f33fed2464a10596b9..a51ead27cb370b1de8784a29c5372d664652af64 100644 (file)
@@ -1,2 +1,3 @@
 vsprintf-avoid-misleading-null-for-px.patch
 hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch
+ipmi_si-fix-error-handling-of-platform-device.patch