aboutsummaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authordavem <davem>1996-04-04 12:39:01 +0000
committerdavem <davem>1996-04-04 12:39:01 +0000
commitb5f69ec9980886502bff22eb14a78398760cca47 (patch)
treec87aa0f070d01a3cfbe1a02abf682924a56640d3 /ipc
parentb5240e1fd6191d58dc0b051665fcf40f123a62a1 (diff)
downloadnetdev-vger-cvs-b5f69ec9980886502bff22eb14a78398760cca47.tar.gz
Merge to 1.3.83
Diffstat (limited to 'ipc')
-rw-r--r--ipc/shm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ipc/shm.c b/ipc/shm.c
index 8de4c7ea5..36b12f4ea 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -433,7 +433,7 @@ static int shm_map (struct vm_area_struct *shmd)
/* map page range */
shm_sgn = shmd->vm_pte +
SWP_ENTRY(0, (shmd->vm_offset >> PAGE_SHIFT) << SHM_IDX_SHIFT);
-
+ flush_cache_range(shmd->vm_mm, shmd->vm_start, shmd->vm_end);
for (tmp = shmd->vm_start;
tmp < shmd->vm_end;
tmp += PAGE_SIZE, shm_sgn += SWP_ENTRY(0, 1 << SHM_IDX_SHIFT))
@@ -447,7 +447,7 @@ static int shm_map (struct vm_area_struct *shmd)
return -ENOMEM;
set_pte(page_table, __pte(shm_sgn));
}
- invalidate_range(shmd->vm_mm, shmd->vm_start, shmd->vm_end);
+ flush_tlb_range(shmd->vm_mm, shmd->vm_start, shmd->vm_end);
return 0;
}
@@ -761,12 +761,13 @@ int shm_swap (int prio, int dma)
}
if (pte_page(pte) != pte_page(page))
printk("shm_swap_out: page and pte mismatch\n");
+ flush_cache_page(shmd, tmp);
set_pte(page_table,
__pte(shmd->vm_pte + SWP_ENTRY(0, idx << SHM_IDX_SHIFT)));
mem_map[MAP_NR(pte_page(pte))].count--;
if (shmd->vm_mm->rss > 0)
shmd->vm_mm->rss--;
- invalidate_page(shmd, tmp);
+ flush_tlb_page(shmd, tmp);
/* continue looping through circular list */
} while (0);
if ((shmd = shmd->vm_next_share) == shp->attaches)