===== net/core/dev.c 1.145 vs edited ===== --- 1.145/net/core/dev.c 2004-06-04 15:02:47 +10:00 +++ edited/net/core/dev.c 2004-06-17 18:31:12 +10:00 @@ -3033,6 +3033,12 @@ netdev_wait_allrefs(dev); + /* Wait for at least one quiescent state before + * destroying dev. This ensures users like + * dst->dev are completely finished. + */ + synchronize_net(); + /* paranoia */ BUG_ON(atomic_read(&dev->refcnt)); BUG_TRAP(!dev->ip_ptr); ===== net/core/dst.c 1.19 vs edited ===== --- 1.19/net/core/dst.c 2004-06-17 06:42:22 +10:00 +++ edited/net/core/dst.c 2004-06-17 18:31:46 +10:00 @@ -231,12 +231,6 @@ if (unregister) { dst->dev = &loopback_dev; dev_hold(&loopback_dev); - - /* Wait for at least one quiescent state after - * detaching the stale device from dst. - */ - synchronize_kernel(); - dev_put(dev); if (dst->neighbour && dst->neighbour->dev == dev) { dst->neighbour->dev = &loopback_dev;