diff options
author | Axel Lin <axel.lin@ingics.com> | 2014-03-30 04:43:23 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-04-14 12:18:55 -0400 |
commit | abcadeb255074d1351d110ef696b647859fa3d5b (patch) | |
tree | 9324e03772f0f65e838764d6bd91b517f4e0b38b | |
parent | c9eaa447e77efe77b7fa4c953bd62de8297fd6c5 (diff) |
spi: fsl: Kill mpc8xxx_spi_cleanup and convert fsl_espi_setup to use devm_kzalloc
In current code, master->cleanup and master->setup are not set in the same
function. This makes it hard to read and not good for code maintain.
One example is in fsl-spi.c, master->cleanup is overrided in mpc8xxx_spi_probe()
which leads to a memory leak.
This patch removes mpc8xxx_spi_cleanup() and converts fsl_espi_setup to use
devm_kzalloc so we don't need to take care of freeing memory.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | drivers/spi/spi-fsl-espi.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-fsl-lib.c | 6 | ||||
-rw-r--r-- | drivers/spi/spi-fsl-lib.h | 1 |
3 files changed, 1 insertions, 8 deletions
diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c index e767f5831b9c..3cf7d65bc739 100644 --- a/drivers/spi/spi-fsl-espi.c +++ b/drivers/spi/spi-fsl-espi.c | |||
@@ -458,7 +458,7 @@ static int fsl_espi_setup(struct spi_device *spi) | |||
458 | return -EINVAL; | 458 | return -EINVAL; |
459 | 459 | ||
460 | if (!cs) { | 460 | if (!cs) { |
461 | cs = kzalloc(sizeof *cs, GFP_KERNEL); | 461 | cs = devm_kzalloc(&spi->dev, sizeof(*cs), GFP_KERNEL); |
462 | if (!cs) | 462 | if (!cs) |
463 | return -ENOMEM; | 463 | return -ENOMEM; |
464 | spi->controller_state = cs; | 464 | spi->controller_state = cs; |
diff --git a/drivers/spi/spi-fsl-lib.c b/drivers/spi/spi-fsl-lib.c index e5d45fca3551..95212ea96c8d 100644 --- a/drivers/spi/spi-fsl-lib.c +++ b/drivers/spi/spi-fsl-lib.c | |||
@@ -99,11 +99,6 @@ int mpc8xxx_spi_transfer(struct spi_device *spi, | |||
99 | return 0; | 99 | return 0; |
100 | } | 100 | } |
101 | 101 | ||
102 | void mpc8xxx_spi_cleanup(struct spi_device *spi) | ||
103 | { | ||
104 | kfree(spi->controller_state); | ||
105 | } | ||
106 | |||
107 | const char *mpc8xxx_spi_strmode(unsigned int flags) | 102 | const char *mpc8xxx_spi_strmode(unsigned int flags) |
108 | { | 103 | { |
109 | if (flags & SPI_QE_CPU_MODE) { | 104 | if (flags & SPI_QE_CPU_MODE) { |
@@ -134,7 +129,6 @@ int mpc8xxx_spi_probe(struct device *dev, struct resource *mem, | |||
134 | | SPI_LSB_FIRST | SPI_LOOP; | 129 | | SPI_LSB_FIRST | SPI_LOOP; |
135 | 130 | ||
136 | master->transfer = mpc8xxx_spi_transfer; | 131 | master->transfer = mpc8xxx_spi_transfer; |
137 | master->cleanup = mpc8xxx_spi_cleanup; | ||
138 | master->dev.of_node = dev->of_node; | 132 | master->dev.of_node = dev->of_node; |
139 | 133 | ||
140 | mpc8xxx_spi = spi_master_get_devdata(master); | 134 | mpc8xxx_spi = spi_master_get_devdata(master); |
diff --git a/drivers/spi/spi-fsl-lib.h b/drivers/spi/spi-fsl-lib.h index 52db6936778e..2fcbfd01d109 100644 --- a/drivers/spi/spi-fsl-lib.h +++ b/drivers/spi/spi-fsl-lib.h | |||
@@ -124,7 +124,6 @@ extern struct mpc8xxx_spi_probe_info *to_of_pinfo( | |||
124 | extern int mpc8xxx_spi_bufs(struct mpc8xxx_spi *mspi, | 124 | extern int mpc8xxx_spi_bufs(struct mpc8xxx_spi *mspi, |
125 | struct spi_transfer *t, unsigned int len); | 125 | struct spi_transfer *t, unsigned int len); |
126 | extern int mpc8xxx_spi_transfer(struct spi_device *spi, struct spi_message *m); | 126 | extern int mpc8xxx_spi_transfer(struct spi_device *spi, struct spi_message *m); |
127 | extern void mpc8xxx_spi_cleanup(struct spi_device *spi); | ||
128 | extern const char *mpc8xxx_spi_strmode(unsigned int flags); | 127 | extern const char *mpc8xxx_spi_strmode(unsigned int flags); |
129 | extern int mpc8xxx_spi_probe(struct device *dev, struct resource *mem, | 128 | extern int mpc8xxx_spi_probe(struct device *dev, struct resource *mem, |
130 | unsigned int irq); | 129 | unsigned int irq); |