diff options
Diffstat (limited to 'net/ipv4/multipath_wrandom.c')
-rw-r--r-- | net/ipv4/multipath_wrandom.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/net/ipv4/multipath_wrandom.c b/net/ipv4/multipath_wrandom.c index bd7d75b6abe0..d34a9fa608e0 100644 --- a/net/ipv4/multipath_wrandom.c +++ b/net/ipv4/multipath_wrandom.c | |||
@@ -207,16 +207,12 @@ static void wrandom_select_route(const struct flowi *flp, | |||
207 | decision = mpc->rt; | 207 | decision = mpc->rt; |
208 | 208 | ||
209 | last_power = mpc->power; | 209 | last_power = mpc->power; |
210 | if (last_mpc) | 210 | kfree(last_mpc); |
211 | kfree(last_mpc); | ||
212 | |||
213 | last_mpc = mpc; | 211 | last_mpc = mpc; |
214 | } | 212 | } |
215 | 213 | ||
216 | if (last_mpc) { | 214 | /* concurrent __multipath_flush may lead to !last_mpc */ |
217 | /* concurrent __multipath_flush may lead to !last_mpc */ | 215 | kfree(last_mpc); |
218 | kfree(last_mpc); | ||
219 | } | ||
220 | 216 | ||
221 | decision->u.dst.__use++; | 217 | decision->u.dst.__use++; |
222 | *rp = decision; | 218 | *rp = decision; |