Showing error 1184

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: drivers/char/ipmi/ipmi_msghandler.c
Line in file: 3659
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-30 10:52:00 UTC


Source:

3629                goto out;
3630        }
3631
3632        /*
3633         * To preserve message order, if the list is not empty, we
3634         * tack this message onto the end of the list.
3635         */
3636        run_to_completion = intf->run_to_completion;
3637        if (!run_to_completion)
3638                spin_lock_irqsave(&intf->waiting_msgs_lock, flags);
3639        if (!list_empty(&intf->waiting_msgs)) {
3640                list_add_tail(&msg->link, &intf->waiting_msgs);
3641                if (!run_to_completion)
3642                        spin_unlock_irqrestore(&intf->waiting_msgs_lock, flags);
3643                goto out;
3644        }
3645        if (!run_to_completion)
3646                spin_unlock_irqrestore(&intf->waiting_msgs_lock, flags);
3647
3648        rv = handle_new_recv_msg(intf, msg);
3649        if (rv > 0) {
3650                /*
3651                 * Could not handle the message now, just add it to a
3652                 * list to handle later.
3653                 */
3654                run_to_completion = intf->run_to_completion;
3655                if (!run_to_completion)
3656                        spin_lock_irqsave(&intf->waiting_msgs_lock, flags);
3657                list_add_tail(&msg->link, &intf->waiting_msgs);
3658                if (!run_to_completion)
3659                        spin_unlock_irqrestore(&intf->waiting_msgs_lock, flags);
3660        } else if (rv == 0) {
3661                ipmi_free_smi_msg(msg);
3662        }
3663
3664 out:
3665        return;
3666}
3667EXPORT_SYMBOL(ipmi_smi_msg_received);
3668
3669void ipmi_smi_watchdog_pretimeout(ipmi_smi_t intf)
Show full sources