diff options
Diffstat (limited to 'net/core/pktgen.c')
-rw-r--r-- | net/core/pktgen.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index ccbc3a48cc27..1b1f1262a275 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -424,7 +424,7 @@ static int pktgen_device_event(struct notifier_block *, unsigned long, void *); | |||
424 | static void pktgen_run_all_threads(void); | 424 | static void pktgen_run_all_threads(void); |
425 | static void pktgen_reset_all_threads(void); | 425 | static void pktgen_reset_all_threads(void); |
426 | static void pktgen_stop_all_threads_ifs(void); | 426 | static void pktgen_stop_all_threads_ifs(void); |
427 | static int pktgen_stop_device(struct pktgen_dev *pkt_dev); | 427 | |
428 | static void pktgen_stop(struct pktgen_thread *t); | 428 | static void pktgen_stop(struct pktgen_thread *t); |
429 | static void pktgen_clear_counters(struct pktgen_dev *pkt_dev); | 429 | static void pktgen_clear_counters(struct pktgen_dev *pkt_dev); |
430 | 430 | ||
@@ -3221,7 +3221,6 @@ static void show_results(struct pktgen_dev *pkt_dev, int nr_frags) | |||
3221 | } | 3221 | } |
3222 | 3222 | ||
3223 | /* Set stopped-at timer, remove from running list, do counters & statistics */ | 3223 | /* Set stopped-at timer, remove from running list, do counters & statistics */ |
3224 | |||
3225 | static int pktgen_stop_device(struct pktgen_dev *pkt_dev) | 3224 | static int pktgen_stop_device(struct pktgen_dev *pkt_dev) |
3226 | { | 3225 | { |
3227 | int nr_frags = pkt_dev->skb ? skb_shinfo(pkt_dev->skb)->nr_frags : -1; | 3226 | int nr_frags = pkt_dev->skb ? skb_shinfo(pkt_dev->skb)->nr_frags : -1; |
@@ -3232,6 +3231,8 @@ static int pktgen_stop_device(struct pktgen_dev *pkt_dev) | |||
3232 | return -EINVAL; | 3231 | return -EINVAL; |
3233 | } | 3232 | } |
3234 | 3233 | ||
3234 | kfree_skb(pkt_dev->skb); | ||
3235 | pkt_dev->skb = NULL; | ||
3235 | pkt_dev->stopped_at = getCurUs(); | 3236 | pkt_dev->stopped_at = getCurUs(); |
3236 | pkt_dev->running = 0; | 3237 | pkt_dev->running = 0; |
3237 | 3238 | ||
@@ -3268,9 +3269,6 @@ static void pktgen_stop(struct pktgen_thread *t) | |||
3268 | 3269 | ||
3269 | list_for_each_entry(pkt_dev, &t->if_list, list) { | 3270 | list_for_each_entry(pkt_dev, &t->if_list, list) { |
3270 | pktgen_stop_device(pkt_dev); | 3271 | pktgen_stop_device(pkt_dev); |
3271 | kfree_skb(pkt_dev->skb); | ||
3272 | |||
3273 | pkt_dev->skb = NULL; | ||
3274 | } | 3272 | } |
3275 | 3273 | ||
3276 | if_unlock(t); | 3274 | if_unlock(t); |
@@ -3382,8 +3380,6 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3382 | 3380 | ||
3383 | if (!netif_running(odev)) { | 3381 | if (!netif_running(odev)) { |
3384 | pktgen_stop_device(pkt_dev); | 3382 | pktgen_stop_device(pkt_dev); |
3385 | kfree_skb(pkt_dev->skb); | ||
3386 | pkt_dev->skb = NULL; | ||
3387 | goto out; | 3383 | goto out; |
3388 | } | 3384 | } |
3389 | if (need_resched()) | 3385 | if (need_resched()) |
@@ -3486,8 +3482,6 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev) | |||
3486 | 3482 | ||
3487 | /* Done with this */ | 3483 | /* Done with this */ |
3488 | pktgen_stop_device(pkt_dev); | 3484 | pktgen_stop_device(pkt_dev); |
3489 | kfree_skb(pkt_dev->skb); | ||
3490 | pkt_dev->skb = NULL; | ||
3491 | } | 3485 | } |
3492 | out:; | 3486 | out:; |
3493 | } | 3487 | } |