From 8dc9884090bcc1e65bf21080738ada61f6c928b8 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Mon, 25 Mar 2013 05:03:39 +0000 Subject: [PATCH] --- yaml --- r: 368658 b: refs/heads/master c: 21168245031062212c0b805d0bd466ee6dd4a16f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/dsa/dsa.c | 38 ++++++++++++++++++-------------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/[refs] b/[refs] index bf57b1fd9ccf..3fcf0c29e441 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c64f1f70cf3e7860bae12d62a31c137a6a4f4a7 +refs/heads/master: 21168245031062212c0b805d0bd466ee6dd4a16f diff --git a/trunk/net/dsa/dsa.c b/trunk/net/dsa/dsa.c index 908bc11082db..aa2ff583b7ed 100644 --- a/trunk/net/dsa/dsa.c +++ b/trunk/net/dsa/dsa.c @@ -343,6 +343,21 @@ static int dsa_of_setup_routing_table(struct dsa_platform_data *pd, 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 @@ static int dsa_of_probe(struct platform_device *pdev) 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