@@ -2298,6 +2309,14 @@ static int i_ipmi_request(struct ipmi_user     *user,
        struct ipmi_recv_msg *recv_msg;
        int rv = 0;
+ if (user) {
+               if (atomic_add_return(1, &user->nr_msgs) > max_msgs_per_user) {
+                       atomic_dec(&user->nr_msgs);
+                       rv = -EBUSY;
+                       goto out;
+               }
+       }
+
@@ -2369,6 +2388,8 @@ static int i_ipmi_request(struct ipmi_user     *user,
        rcu_read_unlock();
out:
+       if (rv && user)
+               atomic_dec(&user->nr_msgs);
        return rv;
  }

If the number of msg is greater than the limit, the nr_msgs will be decrease twice.

Should it be returned directory?

--
Chen Guanqiao


_______________________________________________
Openipmi-developer mailing list
Openipmi-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to