Arthur Kepner writes:
> There's a race in pktgen which can lead to a double
> free of a pktgen_dev's skb. If a worker thread is in
> the midst of doing fill_packet(), and the controlling
> thread gets a "stop" message, the already freed skb
> can be freed once again in pktgen_stop_device().
Hello!
A device can only belong to one CPU/thread and to avoid races control
messages are posted to the thread. In the case you mention most pktgen_stop
is called from the same CPU/thread.
pktgen_stop_all_threads_ifs is an exception it should be possible
set running in struct pktgen_dev to false for all devs in the thread
and have the pktgen_thread_worker to do pktgen_stop to avoid races.
The same trick could be used in the case we get NETDEV_UNREGISTER
So in __pktgen_NN_threads instead of removing the device we set
running false and the pktgen_thread_worker do the remove job. It
might need some syncing. Anything you could try?
Cheers.
--ro
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html