From 21168245031062212c0b805d0bd466ee6dd4a16f Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Mon, 25 Mar 2013 05:03:39 +0000 Subject: dsa: factor freeing of dsa_platform_data This patch factors the freeing of the struct dsa_platform_data manipulated by the driver identically in two places to a single function. Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller --- net/dsa/dsa.c | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'net/dsa/dsa.c') diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index 908bc11082db..aa2ff583b7ed 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c @@ -343,6 +343,21 @@ out: return ret; } +static void dsa_of_free_platform_data(struct dsa_platform_data *pd) +{ + int i; + int port_index; + + for (i = 0; i < pd->nr_chips; i++) { + port_index = 0; + while (pd->chip[i].port_names && + pd->chip[i].port_names[++port_index]) + kfree(pd->chip[i].port_names[port_index]); + kfree(pd->chip[i].rtable); + } + kfree(pd->chip); +} + static int dsa_of_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; @@ -354,7 +369,7 @@ static int dsa_of_probe(struct platform_device *pdev) const char *port_name; int chip_index, port_index; const unsigned int *sw_addr, *port_reg; - int ret, i; + int ret; mdio = of_parse_phandle(np, "dsa,mii-bus", 0); if (!mdio) @@ -439,14 +454,7 @@ static int dsa_of_probe(struct platform_device *pdev) return 0; out_free_chip: - for (i = 0; i < pd->nr_chips; i++) { - port_index = 0; - while (pd->chip[i].port_names && - pd->chip[i].port_names[++port_index]) - kfree(pd->chip[i].port_names[port_index]); - kfree(pd->chip[i].rtable); - } - kfree(pd->chip); + dsa_of_free_platform_data(pd); out_free: kfree(pd); pdev->dev.platform_data = NULL; @@ -456,21 +464,11 @@ out_free: static void dsa_of_remove(struct platform_device *pdev) { struct dsa_platform_data *pd = pdev->dev.platform_data; - int i; - int port_index; if (!pdev->dev.of_node) return; - for (i = 0; i < pd->nr_chips; i++) { - port_index = 0; - while (pd->chip[i].port_names && - pd->chip[i].port_names[++port_index]) - kfree(pd->chip[i].port_names[port_index]); - kfree(pd->chip[i].rtable); - } - - kfree(pd->chip); + dsa_of_free_platform_data(pd); kfree(pd); } #else -- cgit v1.2.3-59-g8ed1b