diff -ur linux.orig/drivers/char/ipmi/ipmi_devintf.c linux-main/drivers/char/ipmi/ipmi_devintf.c --- linux.orig/drivers/char/ipmi/ipmi_devintf.c Mon Apr 7 15:55:43 2003 +++ linux-main/drivers/char/ipmi/ipmi_devintf.c Thu Apr 3 12:32:28 2003 @@ -81,9 +81,9 @@ unsigned int mask = 0; unsigned long flags; - spin_lock_irqsave(&priv->recv_msg_lock, flags); - poll_wait(file, &priv->wait, wait); + + spin_lock_irqsave(&priv->recv_msg_lock, flags); if (! list_empty(&(priv->recv_msgs))) mask |= (POLLIN | POLLRDNORM); diff -ur linux.orig/drivers/char/ipmi/ipmi_watchdog.c linux-main/drivers/char/ipmi/ipmi_watchdog.c --- linux.orig/drivers/char/ipmi/ipmi_watchdog.c Tue Jan 14 11:16:10 2003 +++ linux-main/drivers/char/ipmi/ipmi_watchdog.c Wed Apr 9 14:55:03 2003 @@ -751,7 +751,7 @@ { int rv = -EBUSY; - down_read(®ister_sem); + down_write(®ister_sem); if (watchdog_user) goto out; @@ -917,7 +917,7 @@ } else if (strcmp(preaction, "pre_int") == 0) { preaction_val = WDOG_PRETIMEOUT_MSG_INT; } else { - action_val = WDOG_PRETIMEOUT_NONE; + preaction_val = WDOG_PRETIMEOUT_NONE; printk("ipmi_watchdog: Unknown preaction '%s', defaulting to" " none\n", preaction); } @@ -929,7 +929,7 @@ } else if (strcmp(preop, "preop_give_data") == 0) { preop_val = WDOG_PREOP_GIVE_DATA; } else { - action_val = WDOG_PREOP_NONE; + preop_val = WDOG_PREOP_NONE; printk("ipmi_watchdog: Unknown preop '%s', defaulting to" " none\n", preop); }