Subject: dev_change_net_namespace() and synchronize_net()

From: Nicolas Dichtel <[email-masked]>
Date: Tue, 27 Jan 2009 11:23:11 +0100

Hi folks,

I'm asking me philosophical questions about synchronize_net(). In my 
understanding, it is used to ensure that processing of current packets are finished.

In function dev_change_net_namespace(), synchronize_net() is called twice:

One time, between dev_close() and dev_shutdown(). I don't understand why it's 
needed here:
  - if interface is down, no packet can be processed by it
  - if interface is up, dev_close() will call dev_deactivate() which will call 
synchronize_rcu() (equivalent to synchronize_net()).

Second time, synchronize_net() is called just before exiting. Is it really 
necessary?

Thank you for your answers,
Nicolas