if (split_huge_page(page)) {
                                unlock_page(page);
                                put_page(page);
-                               pte_offset_map_lock(mm, pmd, addr, &ptl);
+                               orig_pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
                                break;
                        }
                        unlock_page(page);
                        put_page(page);
-                       pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+                       orig_pte = pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
                        pte--;
                        addr -= PAGE_SIZE;
                        continue;
                        if (split_huge_page(page)) {
                                unlock_page(page);
                                put_page(page);
-                               pte_offset_map_lock(mm, pmd, addr, &ptl);
+                               orig_pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
                                goto out;
                        }
                        unlock_page(page);
                        put_page(page);
-                       pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+                       orig_pte = pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
                        pte--;
                        addr -= PAGE_SIZE;
                        continue;