diff options
Diffstat (limited to 'net/ax25/ax25_route.c')
-rw-r--r-- | net/ax25/ax25_route.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/net/ax25/ax25_route.c b/net/ax25/ax25_route.c index 26b77d972220..b1e945bd6ed3 100644 --- a/net/ax25/ax25_route.c +++ b/net/ax25/ax25_route.c | |||
@@ -54,15 +54,13 @@ void ax25_rt_device_down(struct net_device *dev) | |||
54 | if (s->dev == dev) { | 54 | if (s->dev == dev) { |
55 | if (ax25_route_list == s) { | 55 | if (ax25_route_list == s) { |
56 | ax25_route_list = s->next; | 56 | ax25_route_list = s->next; |
57 | if (s->digipeat != NULL) | 57 | kfree(s->digipeat); |
58 | kfree(s->digipeat); | ||
59 | kfree(s); | 58 | kfree(s); |
60 | } else { | 59 | } else { |
61 | for (t = ax25_route_list; t != NULL; t = t->next) { | 60 | for (t = ax25_route_list; t != NULL; t = t->next) { |
62 | if (t->next == s) { | 61 | if (t->next == s) { |
63 | t->next = s->next; | 62 | t->next = s->next; |
64 | if (s->digipeat != NULL) | 63 | kfree(s->digipeat); |
65 | kfree(s->digipeat); | ||
66 | kfree(s); | 64 | kfree(s); |
67 | break; | 65 | break; |
68 | } | 66 | } |
@@ -90,10 +88,8 @@ static int ax25_rt_add(struct ax25_routes_struct *route) | |||
90 | while (ax25_rt != NULL) { | 88 | while (ax25_rt != NULL) { |
91 | if (ax25cmp(&ax25_rt->callsign, &route->dest_addr) == 0 && | 89 | if (ax25cmp(&ax25_rt->callsign, &route->dest_addr) == 0 && |
92 | ax25_rt->dev == ax25_dev->dev) { | 90 | ax25_rt->dev == ax25_dev->dev) { |
93 | if (ax25_rt->digipeat != NULL) { | 91 | kfree(ax25_rt->digipeat); |
94 | kfree(ax25_rt->digipeat); | 92 | ax25_rt->digipeat = NULL; |
95 | ax25_rt->digipeat = NULL; | ||
96 | } | ||
97 | if (route->digi_count != 0) { | 93 | if (route->digi_count != 0) { |
98 | if ((ax25_rt->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) { | 94 | if ((ax25_rt->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) { |
99 | write_unlock(&ax25_route_lock); | 95 | write_unlock(&ax25_route_lock); |
@@ -145,8 +141,7 @@ static int ax25_rt_add(struct ax25_routes_struct *route) | |||
145 | static void ax25_rt_destroy(ax25_route *ax25_rt) | 141 | static void ax25_rt_destroy(ax25_route *ax25_rt) |
146 | { | 142 | { |
147 | if (atomic_read(&ax25_rt->ref) == 0) { | 143 | if (atomic_read(&ax25_rt->ref) == 0) { |
148 | if (ax25_rt->digipeat != NULL) | 144 | kfree(ax25_rt->digipeat); |
149 | kfree(ax25_rt->digipeat); | ||
150 | kfree(ax25_rt); | 145 | kfree(ax25_rt); |
151 | return; | 146 | return; |
152 | } | 147 | } |
@@ -530,9 +525,7 @@ void __exit ax25_rt_free(void) | |||
530 | s = ax25_rt; | 525 | s = ax25_rt; |
531 | ax25_rt = ax25_rt->next; | 526 | ax25_rt = ax25_rt->next; |
532 | 527 | ||
533 | if (s->digipeat != NULL) | 528 | kfree(s->digipeat); |
534 | kfree(s->digipeat); | ||
535 | |||
536 | kfree(s); | 529 | kfree(s); |
537 | } | 530 | } |
538 | write_unlock(&ax25_route_lock); | 531 | write_unlock(&ax25_route_lock); |