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);
atomic_set(&kcs_info->req_events, 1);
}
+static int new_user(void *send_info)
+{
+ if (!try_module_get(THIS_MODULE))
+ return -EBUSY;
+ return 0;
+}
+
+static void user_left(void *send_info)
+{
+ module_put(THIS_MODULE);
+}
+
static int initialized = 0;
/* Must be called with interrupts off and with the kcs_lock held. */
unsigned int i;
for (i=intf->curr_seq;
- i!=(intf->curr_seq-1);
+ (i+1)%IPMI_IPMB_NUM_SEQ != intf->curr_seq;
i=(i+1)%IPMI_IPMB_NUM_SEQ)
{
if (! intf->seq_table[i].inuse)
probably, so abort. */
spin_unlock_irqrestore(&(intf->seq_lock),
flags);
- ipmi_free_recv_msg(recv_msg);
- ipmi_free_smi_msg(smi_msg);
goto out_err;
}
{
int rv = -EBUSY;
- down_read(®ister_sem);
+ down_write(®ister_sem);
if (watchdog_user)
goto out;
} 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);
}
} 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);
}