The patch titled mspec: handle shrinking virtual memory areas has been removed from the -mm tree. Its filename was mspec-handle-shrinking-virtual-memory-areas-3.patch This patch was dropped because it was folded into mspec-handle-shrinking-virtual-memory-areas.patch ------------------------------------------------------ Subject: mspec: handle shrinking virtual memory areas From: Cliff Wickman <cpw@xxxxxxx> Stress testing revealed the need for more revision: Version 3: single thread the clearing of vma_data maddr[] Signed-off-by: Cliff Wickman <cpw@xxxxxxx> Acked-by: Jes Sorensen <jes@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/char/mspec.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff -puN drivers/char/mspec.c~mspec-handle-shrinking-virtual-memory-areas-3 drivers/char/mspec.c --- a/drivers/char/mspec.c~mspec-handle-shrinking-virtual-memory-areas-3 +++ a/drivers/char/mspec.c @@ -91,7 +91,7 @@ static int is_sn2; */ struct vma_data { atomic_t refcnt; /* Number of vmas sharing the data. */ - spinlock_t lock; /* Serialize access to the vma. */ + spinlock_t lock; /* Serialize access to this structure. */ int count; /* Number of pages allocated. */ enum mspec_page_type type; /* Type of pages allocated. */ int flags; /* See VMD_xxx below. */ @@ -162,11 +162,13 @@ mspec_close(struct vm_area_struct *vma) { struct vma_data *vdata; int index, last_index, result; + unsigned long my_page; vdata = vma->vm_private_data; BUG_ON(vma->vm_start < vdata->vm_start || vma->vm_end > vdata->vm_end); + spin_lock(&vdata->lock); index = (vma->vm_start - vdata->vm_start) >> PAGE_SHIFT; last_index = (vma->vm_end - vdata->vm_start) >> PAGE_SHIFT; for (; index < last_index; index++) { @@ -176,15 +178,19 @@ mspec_close(struct vm_area_struct *vma) * Clear the page before sticking it back * into the pool. */ - result = mspec_zero_block(vdata->maddr[index], PAGE_SIZE); + my_page = vdata->maddr[index]; + vdata->maddr[index] = 0; + spin_unlock(&vdata->lock); + result = mspec_zero_block(my_page, PAGE_SIZE); if (!result) - uncached_free_page(vdata->maddr[index]); + uncached_free_page(my_page); else printk(KERN_WARNING "mspec_close(): " "failed to zero page %i\n", result); - vdata->maddr[index] = 0; + spin_lock(&vdata->lock); } + spin_unlock(&vdata->lock); if (!atomic_dec_and_test(&vdata->refcnt)) return; _ Patches currently in -mm which might be from cpw@xxxxxxx are mspec-handle-shrinking-virtual-memory-areas.patch mspec-handle-shrinking-virtual-memory-areas-3.patch do-cpu_dead-migrating-under-read_locktasklist-instead-of-write_lock_irqtasklist.patch migration_callcpu_dead-use-spin_lock_irq-instead-of-task_rq_lock.patch hotplug-cpu-migrate-a-task-within-its-cpuset.patch hotplug-cpu-migrate-a-task-within-its-cpuset-fix.patch hotplug-cpu-migrate-a-task-within-its-cpuset-doc.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html