|
@@ -108,11 +108,13 @@ static pte_t get_clear_flush(struct mm_struct *mm,
|
|
unsigned long pgsize,
|
|
unsigned long pgsize,
|
|
unsigned long ncontig)
|
|
unsigned long ncontig)
|
|
{
|
|
{
|
|
- struct vm_area_struct vma = { .vm_mm = mm };
|
|
|
|
|
|
+ struct vm_area_struct vma;
|
|
pte_t orig_pte = huge_ptep_get(ptep);
|
|
pte_t orig_pte = huge_ptep_get(ptep);
|
|
bool valid = pte_valid(orig_pte);
|
|
bool valid = pte_valid(orig_pte);
|
|
unsigned long i, saddr = addr;
|
|
unsigned long i, saddr = addr;
|
|
|
|
|
|
|
|
+ vma_init(&vma, mm);
|
|
|
|
+
|
|
for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) {
|
|
for (i = 0; i < ncontig; i++, addr += pgsize, ptep++) {
|
|
pte_t pte = ptep_get_and_clear(mm, addr, ptep);
|
|
pte_t pte = ptep_get_and_clear(mm, addr, ptep);
|
|
|
|
|
|
@@ -145,9 +147,10 @@ static void clear_flush(struct mm_struct *mm,
|
|
unsigned long pgsize,
|
|
unsigned long pgsize,
|
|
unsigned long ncontig)
|
|
unsigned long ncontig)
|
|
{
|
|
{
|
|
- struct vm_area_struct vma = { .vm_mm = mm };
|
|
|
|
|
|
+ struct vm_area_struct vma;
|
|
unsigned long i, saddr = addr;
|
|
unsigned long i, saddr = addr;
|
|
|
|
|
|
|
|
+ vma_init(&vma, mm);
|
|
for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
|
|
for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
|
|
pte_clear(mm, addr, ptep);
|
|
pte_clear(mm, addr, ptep);
|
|
|
|
|