Showing error 1215

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


Source:

 574}
 575
 576void tipc_link_wakeup_ports(struct link *l_ptr, int all)
 577{
 578        struct port *p_ptr;
 579        struct port *temp_p_ptr;
 580        int win = l_ptr->queue_limit[0] - l_ptr->out_queue_size;
 581
 582        if (all)
 583                win = 100000;
 584        if (win <= 0)
 585                return;
 586        if (!spin_trylock_bh(&tipc_port_list_lock))
 587                return;
 588        if (link_congested(l_ptr))
 589                goto exit;
 590        list_for_each_entry_safe(p_ptr, temp_p_ptr, &l_ptr->waiting_ports,
 591                                 wait_list) {
 592                if (win <= 0)
 593                        break;
 594                list_del_init(&p_ptr->wait_list);
 595                p_ptr->congested_link = NULL;
 596                spin_lock_bh(p_ptr->publ.lock);
 597                p_ptr->publ.congested = 0;
 598                p_ptr->wakeup(&p_ptr->publ);
 599                win -= p_ptr->waiting_pkts;
 600                spin_unlock_bh(p_ptr->publ.lock);
 601        }
 602
 603exit:
 604        spin_unlock_bh(&tipc_port_list_lock);
 605}
 606
 607/**
 608 * link_release_outqueue - purge link's outbound message queue
 609 * @l_ptr: pointer to link
 610 */
 611
 612static void link_release_outqueue(struct link *l_ptr)
 613{
 614        struct sk_buff *buf = l_ptr->first_out;
Show full sources