synchronize_kernel(); 
synchronize_sched();  /* FIXME: should this be synchronize_irq()? */ 
static void rtl8169_down(struct net_device *dev){	struct rtl8169_private *tp = netdev_priv(dev);	void __iomem *ioaddr = tp->mmio_addr;	unsigned int poll_locked = 0;	rtl8169_delete_timer(dev);	netif_stop_queue(dev);	flush_scheduled_work();core_down:	spin_lock_irq(&tp->lock);	rtl8169_asic_down(ioaddr);	/* Update the error counts. */	tp->stats.rx_missed_errors += RTL_R32(RxMissed);	RTL_W32(RxMissed, 0);	spin_unlock_irq(&tp->lock);	synchronize_irq(dev->irq);	if (!poll_locked) {		netif_poll_disable(dev);		poll_locked++;	}	/* Give a racing hard_start_xmit a few cycles to complete. */	synchronize_kernel();	/*	 * And now for the 50k$ question: are IRQ disabled or not ?	 *	 * Two paths lead here:	 * 1) dev->close	 *    -> netif_running() is available to sync the current code and the	 *       IRQ handler. See rtl8169_interrupt for details.	 * 2) dev->change_mtu	 *    -> rtl8169_poll can not be issued again and re-enable the	 *       interruptions. Let's simply issue the IRQ down sequence again.	 */	if (RTL_R16(IntrMask))		goto core_down;	rtl8169_tx_clear(tp);	rtl8169_rx_clear(tp);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fbd568a3e61a7decb8a754ad952aaa5b5c82e9e5/r8169.c/buggy/drivers/net/r8169.c