SMP: protocol control block protection for a multithreaded process (ex: udp).

vasanth rao naik sabavat vasanth.raonaik at gmail.com
Tue May 29 14:53:51 UTC 2012


Hi,

In case of a Multicore cpu system running a multithreaded process.

For protocol control blocks there is no protection provided in the FreeBSD
9. For example, udp_close() and udp_send() access the inp before taking the
lock. Couldn't this cause the inp inconsistency on a multithreaded process
running on multicore cpu system?

Say, If the two threads of a process are concurrently executing socket send
and socket close say on a udp connection (this can happen in case of poorly
written user code.).
udp_close() will access the inp on one cpu and udp_send() will access the
inp on another cpu. it is possible that udp_close() gets the locks first
and free's the inp before udp_send() has a chance to run?

Am I missing anything?

Thanks,
Vasanth


More information about the freebsd-hackers mailing list