*Sorry for the previous incomplete mail*

In highmem.c, the function kmap_high() does the following : 
BUG_ON(pkmap_count[PKMAP_NR(vaddr)] < 2);

Why would this be a " serious bug"?
Don't usable entry have pkmap_count[] value as 0. (in map_new_virtual() )
    if (!pkmap_count[last_pkmap_nr]) 
            break;

How does that work! usable entries have pkmap_count zero but any value less than 2 is a bug!