Thread (4 messages) flat view 4 messages, 3 authors, 2009-03-06

Re: [PATCH] Xilinx: SPI: driver not releasing memory

From: Grant Likely <hidden>
Date: 2009-03-06 15:49:39
Also in: lkml

David,

Are you okay with this patch and okay with it going in via Ben's
powerpc tree?  Ben wants to ensure that changes outside arch/powerpc/
are properly acked before going into his tree.

Thanks,
g.

On Sat, Feb 28, 2009 at 9:09 PM, Grant Likely [off-list ref] w=
rote:
On Fri, Feb 27, 2009 at 4:54 PM, John Linn [off-list ref] wrote:
quoted
The driver was not releasing memory when it was removed or
when there was a failure during probe. This fixes it.

Signed-off-by: John Linn <redacted>
Looks good.

Acked-by: Grant Likely <redacted>

I'll pick this up into my -next branch and ask Ben to pull it in the
next week or so.
quoted hunk ↗ jump to hunk
---
This is an incremental patch to the patch (updated driver
for device tree) that is in the next branch.
---
=A0drivers/spi/xilinx_spi.c | =A0 =A09 +++++++--
=A01 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c
index fe7e5f3..494d3f7 100644
--- a/drivers/spi/xilinx_spi.c
+++ b/drivers/spi/xilinx_spi.c
@@ -354,7 +354,7 @@ static int __init xilinx_spi_of_probe(struct of_devic=
e *ofdev,
=A0 =A0 =A0 =A0if (xspi->regs =3D=3D NULL) {
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0rc =3D -ENOMEM;
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0dev_warn(&ofdev->dev, "ioremap failure\n")=
;
quoted hunk ↗ jump to hunk
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto put_master;
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto release_mem;
=A0 =A0 =A0 =A0}
=A0 =A0 =A0 =A0xspi->irq =3D r_irq->start;
@@ -365,7 +365,7 @@ static int __init xilinx_spi_of_probe(struct of_devic=
e *ofdev,
=A0 =A0 =A0 =A0prop =3D of_get_property(ofdev->node, "xlnx,num-ss-bits", =
&len);
=A0 =A0 =A0 =A0if (!prop || len < sizeof(*prop)) {
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0dev_warn(&ofdev->dev, "no 'xlnx,num-ss-bit=
s' property\n");
quoted hunk ↗ jump to hunk
- =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto put_master;
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto unmap_io;
=A0 =A0 =A0 =A0}
=A0 =A0 =A0 =A0master->num_chipselect =3D *prop;
@@ -397,6 +397,8 @@ free_irq:
=A0 =A0 =A0 =A0free_irq(xspi->irq, xspi);
=A0unmap_io:
=A0 =A0 =A0 =A0iounmap(xspi->regs);
+release_mem:
+ =A0 =A0 =A0 release_mem_region(r_mem->start, resource_size(r_mem));
=A0put_master:
=A0 =A0 =A0 =A0spi_master_put(master);
=A0 =A0 =A0 =A0return rc;
@@ -406,6 +408,7 @@ static int __devexit xilinx_spi_remove(struct of_devi=
ce *ofdev)
quoted hunk ↗ jump to hunk
=A0{
=A0 =A0 =A0 =A0struct xilinx_spi *xspi;
=A0 =A0 =A0 =A0struct spi_master *master;
+ =A0 =A0 =A0 struct resource r_mem;

=A0 =A0 =A0 =A0master =3D platform_get_drvdata(ofdev);
=A0 =A0 =A0 =A0xspi =3D spi_master_get_devdata(master);
@@ -413,6 +416,8 @@ static int __devexit xilinx_spi_remove(struct of_devi=
ce *ofdev)
=A0 =A0 =A0 =A0spi_bitbang_stop(&xspi->bitbang);
=A0 =A0 =A0 =A0free_irq(xspi->irq, xspi);
=A0 =A0 =A0 =A0iounmap(xspi->regs);
+ =A0 =A0 =A0 if (!of_address_to_resource(ofdev->node, 0, &r_mem))
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 release_mem_region(r_mem.start, resource_si=
ze(&r_mem));
=A0 =A0 =A0 =A0dev_set_drvdata(&ofdev->dev, 0);
=A0 =A0 =A0 =A0spi_master_put(xspi->bitbang.master);

--
1.5.3.4



This email and any attachments are intended for the sole use of the named=
 recipient(s) and contain(s) confidential information that may be proprieta=
ry, privileged or copyrighted under applicable law. If you are not the inte=
nded recipient, do not read, copy, or forward this email message or any att=
achments. Delete this email message and any attachments immediately.


--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help