Showing error 608

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_si_intf.c
Line in file: 392
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:20:57 UTC


Source:

 362                smi_info->curr_msg = NULL;
 363                rv = SI_SM_IDLE;
 364        } else {
 365                int err;
 366
 367                list_del(entry);
 368                smi_info->curr_msg = list_entry(entry,
 369                                                struct ipmi_smi_msg,
 370                                                link);
 371#ifdef DEBUG_TIMING
 372                do_gettimeofday(&t);
 373                printk(KERN_DEBUG "**Start2: %d.%9.9d\n", t.tv_sec, t.tv_usec);
 374#endif
 375                err = atomic_notifier_call_chain(&xaction_notifier_list,
 376                                0, smi_info);
 377                if (err & NOTIFY_STOP_MASK) {
 378                        rv = SI_SM_CALL_WITHOUT_DELAY;
 379                        goto out;
 380                }
 381                err = smi_info->handlers->start_transaction(
 382                        smi_info->si_sm,
 383                        smi_info->curr_msg->data,
 384                        smi_info->curr_msg->data_size);
 385                if (err)
 386                        return_hosed_msg(smi_info, err);
 387
 388                rv = SI_SM_CALL_WITHOUT_DELAY;
 389        }
 390 out:
 391        if (!smi_info->run_to_completion)
 392                spin_unlock(&(smi_info->msg_lock));
 393
 394        return rv;
 395}
 396
 397static void start_enable_irq(struct smi_info *smi_info)
 398{
 399        unsigned char msg[2];
 400
 401        /*
 402         * If we are enabling interrupts, we have to tell the
Show full sources