Showing error 1165

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


Source:

2426
2427        pagevec_init(&pvec, 0);
2428        while (next < end &&
2429                pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) {
2430                int i;
2431                int pg_scanned = 0;
2432
2433                zone = NULL;
2434
2435                for (i = 0; i < pagevec_count(&pvec); i++) {
2436                        struct page *page = pvec.pages[i];
2437                        pgoff_t page_index = page->index;
2438                        struct zone *pagezone = page_zone(page);
2439
2440                        pg_scanned++;
2441                        if (page_index > next)
2442                                next = page_index;
2443                        next++;
2444
2445                        if (pagezone != zone) {
2446                                if (zone)
2447                                        spin_unlock_irq(&zone->lru_lock);
2448                                zone = pagezone;
2449                                spin_lock_irq(&zone->lru_lock);
2450                        }
2451
2452                        if (PageLRU(page) && PageUnevictable(page))
2453                                check_move_unevictable_page(page, zone);
2454                }
2455                if (zone)
2456                        spin_unlock_irq(&zone->lru_lock);
2457                pagevec_release(&pvec);
2458
2459                count_vm_events(UNEVICTABLE_PGSCANNED, pg_scanned);
2460        }
2461
2462}
2463
2464/**
2465 * scan_zone_unevictable_pages - check unevictable list for evictable pages
2466 * @zone - zone of which to scan the unevictable list
Show full sources