694 temp_cpa_vaddr = (cpa->pfn << PAGE_SHIFT) + __START_KERNEL_map - phys_base;
695 alias_cpa.vaddr = &temp_cpa_vaddr;
696 alias_cpa.flags &= ~CPA_ARRAY;
697
698
699
700
701 __change_page_attr_set_clr(&alias_cpa, 0);
702#endif
703 return ret;
704}
705
706static int __change_page_attr_set_clr(struct cpa_data *cpa, int checkalias)
707{
708 int ret, numpages = cpa->numpages;
709
710 while (numpages) {
711
712
713
714
715 cpa->numpages = numpages;
716
717 if (cpa->flags & CPA_ARRAY)
718 cpa->numpages = 1;
719
720 if (!debug_pagealloc)
721 spin_lock(&cpa_lock);
722 ret = __change_page_attr(cpa, checkalias);
723 if (!debug_pagealloc)
724 spin_unlock(&cpa_lock);
725 if (ret)
726 return ret;
727
728 if (checkalias) {
729 ret = cpa_process_alias(cpa);
730 if (ret)
731 return ret;
732 }
733
734