Lines Matching refs:priv
111 static void hold_task_mempolicy(struct proc_maps_private *priv) in hold_task_mempolicy() argument
113 struct task_struct *task = priv->task; in hold_task_mempolicy()
116 priv->task_mempolicy = get_task_policy(task); in hold_task_mempolicy()
117 mpol_get(priv->task_mempolicy); in hold_task_mempolicy()
120 static void release_task_mempolicy(struct proc_maps_private *priv) in release_task_mempolicy() argument
122 mpol_put(priv->task_mempolicy); in release_task_mempolicy()
125 static void hold_task_mempolicy(struct proc_maps_private *priv) in hold_task_mempolicy() argument
128 static void release_task_mempolicy(struct proc_maps_private *priv) in release_task_mempolicy() argument
135 static void unlock_vma(struct proc_maps_private *priv) in unlock_vma() argument
137 if (priv->locked_vma) { in unlock_vma()
138 vma_end_read(priv->locked_vma); in unlock_vma()
139 priv->locked_vma = NULL; in unlock_vma()
146 struct proc_maps_private *priv) in lock_vma_range() argument
154 if (mmap_read_lock_killable(priv->mm)) in lock_vma_range()
157 priv->mmap_locked = true; in lock_vma_range()
160 priv->locked_vma = NULL; in lock_vma_range()
161 priv->mmap_locked = false; in lock_vma_range()
167 static inline void unlock_vma_range(struct proc_maps_private *priv) in unlock_vma_range() argument
169 if (priv->mmap_locked) { in unlock_vma_range()
170 mmap_read_unlock(priv->mm); in unlock_vma_range()
172 unlock_vma(priv); in unlock_vma_range()
177 static struct vm_area_struct *get_next_vma(struct proc_maps_private *priv, in get_next_vma() argument
182 if (priv->mmap_locked) in get_next_vma()
183 return vma_next(&priv->iter); in get_next_vma()
185 unlock_vma(priv); in get_next_vma()
186 vma = lock_next_vma(priv->mm, &priv->iter, last_pos); in get_next_vma()
188 priv->locked_vma = vma; in get_next_vma()
193 static inline bool fallback_to_mmap_lock(struct proc_maps_private *priv, in fallback_to_mmap_lock() argument
196 if (priv->mmap_locked) in fallback_to_mmap_lock()
200 mmap_read_lock(priv->mm); in fallback_to_mmap_lock()
202 vma_iter_set(&priv->iter, pos); in fallback_to_mmap_lock()
203 priv->mmap_locked = true; in fallback_to_mmap_lock()
211 struct proc_maps_private *priv) in lock_vma_range() argument
213 return mmap_read_lock_killable(priv->mm) == 0; in lock_vma_range()
216 static inline void unlock_vma_range(struct proc_maps_private *priv) in unlock_vma_range() argument
218 mmap_read_unlock(priv->mm); in unlock_vma_range()
221 static struct vm_area_struct *get_next_vma(struct proc_maps_private *priv, in get_next_vma() argument
224 return vma_next(&priv->iter); in get_next_vma()
227 static inline bool fallback_to_mmap_lock(struct proc_maps_private *priv, in fallback_to_mmap_lock() argument
237 struct proc_maps_private *priv = m->private; in proc_get_vma() local
241 vma = get_next_vma(priv, *ppos); in proc_get_vma()
244 if (PTR_ERR(vma) == -EAGAIN && fallback_to_mmap_lock(priv, *ppos)) in proc_get_vma()
251 priv->last_pos = *ppos; in proc_get_vma()
261 vma = get_gate_vma(priv->mm); in proc_get_vma()
269 struct proc_maps_private *priv = m->private; in m_start() local
277 priv->task = get_proc_task(priv->inode); in m_start()
278 if (!priv->task) in m_start()
281 mm = priv->mm; in m_start()
283 put_task_struct(priv->task); in m_start()
284 priv->task = NULL; in m_start()
288 if (!lock_vma_range(m, priv)) { in m_start()
290 put_task_struct(priv->task); in m_start()
291 priv->task = NULL; in m_start()
300 *ppos = last_addr = priv->last_pos; in m_start()
301 vma_iter_init(&priv->iter, mm, (unsigned long)last_addr); in m_start()
302 hold_task_mempolicy(priv); in m_start()
320 struct proc_maps_private *priv = m->private; in m_stop() local
321 struct mm_struct *mm = priv->mm; in m_stop()
323 if (!priv->task) in m_stop()
326 release_task_mempolicy(priv); in m_stop()
327 unlock_vma_range(priv); in m_stop()
329 put_task_struct(priv->task); in m_stop()
330 priv->task = NULL; in m_stop()
336 struct proc_maps_private *priv = __seq_open_private(file, ops, psize); in proc_maps_open() local
338 if (!priv) in proc_maps_open()
341 priv->inode = inode; in proc_maps_open()
342 priv->mm = proc_mem_open(inode, PTRACE_MODE_READ); in proc_maps_open()
343 if (IS_ERR(priv->mm)) { in proc_maps_open()
344 int err = PTR_ERR(priv->mm); in proc_maps_open()
356 struct proc_maps_private *priv = seq->private; in proc_map_release() local
358 if (priv->mm) in proc_map_release()
359 mmdrop(priv->mm); in proc_map_release()
582 static int do_procmap_query(struct proc_maps_private *priv, void __user *uarg) in do_procmap_query() argument
613 mm = priv->mm; in do_procmap_query()
737 struct proc_maps_private *priv = seq->private; in procfs_procmap_ioctl() local
741 return do_procmap_query(priv, (void __user *)arg); in procfs_procmap_ioctl()
1312 struct proc_maps_private *priv = m->private; in show_smaps_rollup() local
1314 struct mm_struct *mm = priv->mm; in show_smaps_rollup()
1320 priv->task = get_proc_task(priv->inode); in show_smaps_rollup()
1321 if (!priv->task) in show_smaps_rollup()
1333 hold_task_mempolicy(priv); in show_smaps_rollup()
1353 release_task_mempolicy(priv); in show_smaps_rollup()
1420 release_task_mempolicy(priv); in show_smaps_rollup()
1426 put_task_struct(priv->task); in show_smaps_rollup()
1427 priv->task = NULL; in show_smaps_rollup()
1448 struct proc_maps_private *priv; in smaps_rollup_open() local
1450 priv = kzalloc(sizeof(*priv), GFP_KERNEL_ACCOUNT); in smaps_rollup_open()
1451 if (!priv) in smaps_rollup_open()
1454 ret = single_open(file, show_smaps_rollup, priv); in smaps_rollup_open()
1458 priv->inode = inode; in smaps_rollup_open()
1459 priv->mm = proc_mem_open(inode, PTRACE_MODE_READ); in smaps_rollup_open()
1460 if (IS_ERR_OR_NULL(priv->mm)) { in smaps_rollup_open()
1461 ret = priv->mm ? PTR_ERR(priv->mm) : -ESRCH; in smaps_rollup_open()
1470 kfree(priv); in smaps_rollup_open()
1477 struct proc_maps_private *priv = seq->private; in smaps_rollup_release() local
1479 if (priv->mm) in smaps_rollup_release()
1480 mmdrop(priv->mm); in smaps_rollup_release()
1482 kfree(priv); in smaps_rollup_release()