diff options
Diffstat (limited to 'fs/proc')
| -rw-r--r-- | fs/proc/array.c | 89 | ||||
| -rw-r--r-- | fs/proc/base.c | 1 | ||||
| -rw-r--r-- | fs/proc/task_mmu.c | 3 | 
3 files changed, 1 insertions, 92 deletions
| diff --git a/fs/proc/array.c b/fs/proc/array.c index f560325c444f..13b5d0708175 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -327,94 +327,6 @@ static inline void task_context_switch_counts(struct seq_file *m,  			p->nivcsw);  } -#ifdef CONFIG_MMU - -struct stack_stats { -	struct vm_area_struct *vma; -	unsigned long	startpage; -	unsigned long	usage; -}; - -static int stack_usage_pte_range(pmd_t *pmd, unsigned long addr, -				unsigned long end, struct mm_walk *walk) -{ -	struct stack_stats *ss = walk->private; -	struct vm_area_struct *vma = ss->vma; -	pte_t *pte, ptent; -	spinlock_t *ptl; -	int ret = 0; - -	pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); -	for (; addr != end; pte++, addr += PAGE_SIZE) { -		ptent = *pte; - -#ifdef CONFIG_STACK_GROWSUP -		if (pte_present(ptent) || is_swap_pte(ptent)) -			ss->usage = addr - ss->startpage + PAGE_SIZE; -#else -		if (pte_present(ptent) || is_swap_pte(ptent)) { -			ss->usage = ss->startpage - addr + PAGE_SIZE; -			pte++; -			ret = 1; -			break; -		} -#endif -	} -	pte_unmap_unlock(pte - 1, ptl); -	cond_resched(); -	return ret; -} - -static inline unsigned long get_stack_usage_in_bytes(struct vm_area_struct *vma, -				struct task_struct *task) -{ -	struct stack_stats ss; -	struct mm_walk stack_walk = { -		.pmd_entry = stack_usage_pte_range, -		.mm = vma->vm_mm, -		.private = &ss, -	}; - -	if (!vma->vm_mm || is_vm_hugetlb_page(vma)) -		return 0; - -	ss.vma = vma; -	ss.startpage = task->stack_start & PAGE_MASK; -	ss.usage = 0; - -#ifdef CONFIG_STACK_GROWSUP -	walk_page_range(KSTK_ESP(task) & PAGE_MASK, vma->vm_end, -		&stack_walk); -#else -	walk_page_range(vma->vm_start, (KSTK_ESP(task) & PAGE_MASK) + PAGE_SIZE, -		&stack_walk); -#endif -	return ss.usage; -} - -static inline void task_show_stack_usage(struct seq_file *m, -						struct task_struct *task) -{ -	struct vm_area_struct	*vma; -	struct mm_struct	*mm = get_task_mm(task); - -	if (mm) { -		down_read(&mm->mmap_sem); -		vma = find_vma(mm, task->stack_start); -		if (vma) -			seq_printf(m, "Stack usage:\t%lu kB\n", -				get_stack_usage_in_bytes(vma, task) >> 10); - -		up_read(&mm->mmap_sem); -		mmput(mm); -	} -} -#else -static void task_show_stack_usage(struct seq_file *m, struct task_struct *task) -{ -} -#endif		/* CONFIG_MMU */ -  static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)  {  	seq_printf(m, "Cpus_allowed:\t"); @@ -445,7 +357,6 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,  	task_show_regs(m, task);  #endif  	task_context_switch_counts(m, task); -	task_show_stack_usage(m, task);  	return 0;  } diff --git a/fs/proc/base.c b/fs/proc/base.c index 18d5cc62d8ed..e42bbd843ed1 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1419,7 +1419,6 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)  		goto out;  	error = PROC_I(inode)->op.proc_get_link(inode, &nd->path); -	nd->last_type = LAST_BIND;  out:  	return ERR_PTR(error);  } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 47c03f4336b8..f277c4a111cb 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -361,12 +361,11 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,  		if (!pte_present(ptent))  			continue; -		mss->resident += PAGE_SIZE; -  		page = vm_normal_page(vma, addr, ptent);  		if (!page)  			continue; +		mss->resident += PAGE_SIZE;  		/* Accumulate the size in pages that have been accessed. */  		if (pte_young(ptent) || PageReferenced(page))  			mss->referenced += PAGE_SIZE; | 
