]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] small ipmi updates
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Thu, 17 Apr 2003 09:30:41 +0000 (02:30 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Thu, 17 Apr 2003 09:30:41 +0000 (02:30 -0700)
drivers/char/ipmi/ipmi_devintf.c
drivers/char/ipmi/ipmi_kcs_intf.c
drivers/char/ipmi/ipmi_msghandler.c
drivers/char/ipmi/ipmi_watchdog.c

index 4db232f8fbedb71dbfb2820476d69b8f09f702dd..4dfebf12e2f4ce8f9826289a532a3cff6a78e397 100644 (file)
@@ -81,10 +81,10 @@ static unsigned int ipmi_poll(struct file *file, poll_table *wait)
        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);
 
index 5042798ec70bb7400d57f7c496c62e93c3f58409..dc30e62a1d078d0391b9ee65ef8b63fc258ba1a8 100644 (file)
@@ -629,6 +629,18 @@ static void request_events(void *send_info)
        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. */
index b8c3834bc141d652e6ae5b94e5af323483b341e7..e52afed2cc95fad368cc5accbbf1b3b974622d6f 100644 (file)
@@ -345,7 +345,7 @@ static int intf_next_seq(ipmi_smi_t           intf,
        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)
@@ -907,8 +907,6 @@ static inline int i_ipmi_request(ipmi_user_t          user,
                                   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;
                        }
 
index 4cf9f79b9081ab7b1c1c765e9c668c153024cc84..db3b55e71a622c2e10a1e2ef5e2bc4198c69cf50 100644 (file)
@@ -751,7 +751,7 @@ static void ipmi_register_watchdog(int ipmi_intf)
 {
        int rv = -EBUSY;
 
-       down_read(&register_sem);
+       down_write(&register_sem);
        if (watchdog_user)
                goto out;
 
@@ -917,7 +917,7 @@ static int __init ipmi_wdog_init(void)
        } 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 @@ static int __init ipmi_wdog_init(void)
        } 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);
        }