diff -Nru a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c --- a/drivers/cdrom/cdu31a.c Sun Sep 22 18:24:25 2002 +++ b/drivers/cdrom/cdu31a.c Sun Sep 22 18:24:25 2002 @@ -386,8 +386,7 @@ unsigned long flags; if (cdu31a_irq <= 0) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(0); + yield(); } else { /* Interrupt driven */ save_flags(flags); diff -Nru a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c --- a/drivers/cdrom/sonycd535.c Sun Sep 22 18:24:25 2002 +++ b/drivers/cdrom/sonycd535.c Sun Sep 22 18:24:25 2002 @@ -344,8 +344,7 @@ sony_sleep(void) { if (sony535_irq_used <= 0) { /* poll */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(0); + yield(); } else { /* Interrupt driven */ cli(); enable_interrupts(); diff -Nru a/drivers/net/sb1000.c b/drivers/net/sb1000.c --- a/drivers/net/sb1000.c Sun Sep 22 18:24:25 2002 +++ b/drivers/net/sb1000.c Sun Sep 22 18:24:25 2002 @@ -295,8 +295,8 @@ timeout = jiffies + TimeOutJiffies; while (a & 0x80 || a & 0x40) { /* a little sleep */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(0); + yield(); + a = inb(ioaddr[0] + 7); if (jiffies >= timeout) { printk(KERN_WARNING "%s: card_wait_for_busy_clear timeout\n", @@ -319,8 +319,8 @@ timeout = jiffies + TimeOutJiffies; while (a & 0x80 || !(a & 0x40)) { /* a little sleep */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(0); + yield(); + a = inb(ioaddr[1] + 6); if (jiffies >= timeout) { printk(KERN_WARNING "%s: card_wait_for_ready timeout\n", diff -Nru a/drivers/net/sis900.c b/drivers/net/sis900.c --- a/drivers/net/sis900.c Sun Sep 22 18:24:25 2002 +++ b/drivers/net/sis900.c Sun Sep 22 18:24:25 2002 @@ -573,8 +573,8 @@ if(status & MII_STAT_LINK){ while (poll_bit) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(0); + yield(); + poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit); if (jiffies >= timeout) { printk(KERN_WARNING "%s: reset phy and link down now\n", net_dev->name);