| .. | .. | 
|---|
| 91 | 91 | struct mm_struct *mm = current->mm; | 
|---|
| 92 | 92 | struct vm_area_struct *mpnt; | 
|---|
| 93 | 93 |  | 
|---|
| 94 |  | -	down_read(&mm->mmap_sem); | 
|---|
|  | 94 | +	mmap_read_lock(mm); | 
|---|
| 95 | 95 |  | 
|---|
| 96 | 96 | mpnt = find_vma(mm, addr); | 
|---|
| 97 | 97 | if (mpnt && mpnt->vm_file && (mpnt->vm_flags & VM_EXEC)) { | 
|---|
| 98 |  | -		up_read(&mm->mmap_sem); | 
|---|
|  | 98 | +		mmap_read_unlock(mm); | 
|---|
| 99 | 99 | /* To avoid latency problems, we only process the current CPU, | 
|---|
| 100 | 100 | * hoping that most samples for the task are on this CPU | 
|---|
| 101 | 101 | */ | 
|---|
| .. | .. | 
|---|
| 103 | 103 | return 0; | 
|---|
| 104 | 104 | } | 
|---|
| 105 | 105 |  | 
|---|
| 106 |  | -	up_read(&mm->mmap_sem); | 
|---|
|  | 106 | +	mmap_read_unlock(mm); | 
|---|
| 107 | 107 | return 0; | 
|---|
| 108 | 108 | } | 
|---|
| 109 | 109 |  | 
|---|
| .. | .. | 
|---|
| 116 | 116 | { | 
|---|
| 117 | 117 | #ifdef CONFIG_MODULES | 
|---|
| 118 | 118 | if (val != MODULE_STATE_COMING) | 
|---|
| 119 |  | -		return 0; | 
|---|
|  | 119 | +		return NOTIFY_DONE; | 
|---|
| 120 | 120 |  | 
|---|
| 121 | 121 | /* FIXME: should we process all CPU buffers ? */ | 
|---|
| 122 | 122 | mutex_lock(&buffer_mutex); | 
|---|
| .. | .. | 
|---|
| 124 | 124 | add_event_entry(MODULE_LOADED_CODE); | 
|---|
| 125 | 125 | mutex_unlock(&buffer_mutex); | 
|---|
| 126 | 126 | #endif | 
|---|
| 127 |  | -	return 0; | 
|---|
|  | 127 | +	return NOTIFY_OK; | 
|---|
| 128 | 128 | } | 
|---|
| 129 | 129 |  | 
|---|
| 130 | 130 |  | 
|---|
| .. | .. | 
|---|
| 256 | 256 | unsigned long cookie = NO_COOKIE; | 
|---|
| 257 | 257 | struct vm_area_struct *vma; | 
|---|
| 258 | 258 |  | 
|---|
| 259 |  | -	down_read(&mm->mmap_sem); | 
|---|
|  | 259 | +	mmap_read_lock(mm); | 
|---|
| 260 | 260 | for (vma = find_vma(mm, addr); vma; vma = vma->vm_next) { | 
|---|
| 261 | 261 |  | 
|---|
| 262 | 262 | if (addr < vma->vm_start || addr >= vma->vm_end) | 
|---|
| .. | .. | 
|---|
| 276 | 276 |  | 
|---|
| 277 | 277 | if (!vma) | 
|---|
| 278 | 278 | cookie = INVALID_COOKIE; | 
|---|
| 279 |  | -	up_read(&mm->mmap_sem); | 
|---|
|  | 279 | +	mmap_read_unlock(mm); | 
|---|
| 280 | 280 |  | 
|---|
| 281 | 281 | return cookie; | 
|---|
| 282 | 282 | } | 
|---|
| .. | .. | 
|---|
| 486 | 486 |  | 
|---|
| 487 | 487 | /* Sync one of the CPU's buffers into the global event buffer. | 
|---|
| 488 | 488 | * Here we need to go through each batch of samples punctuated | 
|---|
| 489 |  | - * by context switch notes, taking the task's mmap_sem and doing | 
|---|
|  | 489 | + * by context switch notes, taking the task's mmap_lock and doing | 
|---|
| 490 | 490 | * lookup in task->mm->mmap to convert EIP into dcookie/offset | 
|---|
| 491 | 491 | * value. | 
|---|
| 492 | 492 | */ | 
|---|