Showing error 1601

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: kernel/sched.c
Line in file: 6112
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-29 20:11:37 UTC


Source:

6082                }
6083
6084                head = &rq->migration_queue;
6085
6086                if (list_empty(head)) {
6087                        spin_unlock_irq(&rq->lock);
6088                        schedule();
6089                        set_current_state(TASK_INTERRUPTIBLE);
6090                        continue;
6091                }
6092                req = list_entry(head->next, struct migration_req, list);
6093                list_del_init(head->next);
6094
6095                spin_unlock(&rq->lock);
6096                __migrate_task(req->task, cpu, req->dest_cpu);
6097                local_irq_enable();
6098
6099                complete(&req->done);
6100        }
6101        __set_current_state(TASK_RUNNING);
6102        return 0;
6103
6104wait_to_die:
6105        /* Wait for kthread_stop */
6106        set_current_state(TASK_INTERRUPTIBLE);
6107        while (!kthread_should_stop()) {
6108                schedule();
6109                set_current_state(TASK_INTERRUPTIBLE);
6110        }
6111        __set_current_state(TASK_RUNNING);
6112        return 0;
6113}
6114
6115#ifdef CONFIG_HOTPLUG_CPU
6116
6117static int __migrate_task_irq(struct task_struct *p, int src_cpu, int dest_cpu)
6118{
6119        int ret;
6120
6121        local_irq_disable();
6122        ret = __migrate_task(p, src_cpu, dest_cpu);
Show full sources