[RESEND,1/1] Revert "spi/doc: spi_master_put must be followed up by kfree"

Message ID 1441493214-12994-1-git-send-email-alexey.klimov@linaro.org
State New
Headers show

Commit Message

Alexey Klimov Sept. 5, 2015, 10:46 p.m.
From: Guenter Roeck <linux@roeck-us.net>

Actually, spi_master_put() after spi_alloc_master() must _not_ be followed
by kfree(). The memory is already freed with the call to spi_master_put()
through spi_master_class, which registers a release function. Calling both
spi_master_put() and kfree() results in often nasty (and delayed) crashes
elsewhere in the kernel, often in the networking stack.

This reverts commit eb4af0f5349235df2e4a5057a72fc8962d00308a.

Link to patch and concerns: https://lkml.org/lkml/2012/9/3/269
or
http://lkml.iu.edu/hypermail/linux/kernel/1209.0/00790.html

Alexey Klimov: This revert becomes valid after
94c69f765f1b4a658d96905ec59928e3e3e07e6a when spi-imx.c
has been fixed and there is no need to call kfree() so comment
for spi_alloc_master() should be fixed.

Cc: Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
 drivers/spi/spi.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Mark Brown Sept. 6, 2015, 12:04 a.m. | #1
On Sun, Sep 06, 2015 at 01:46:54AM +0300, Alexey Klimov wrote:
> From: Guenter Roeck <linux@roeck-us.net>
> 
> Actually, spi_master_put() after spi_alloc_master() must _not_ be followed

Please use subject lines matching the style for the subsystem and please
don't put noise like RESEND in the subject line, especially if the patch
isn't actually being resent.  Both these things make it easier to scan
incoming mail for relevant and important patches.

Patch hide | download patch | download mbox

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 3abb390..a5f53de 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1610,8 +1610,7 @@  static struct class spi_master_class = {
  *
  * The caller is responsible for assigning the bus number and initializing
  * the master's methods before calling spi_register_master(); and (after errors
- * adding the device) calling spi_master_put() and kfree() to prevent a memory
- * leak.
+ * adding the device) calling spi_master_put() to prevent a memory leak.
  */
 struct spi_master *spi_alloc_master(struct device *dev, unsigned size)
 {