[RFC] fs, proc: Introduce the /proc/<pid>/map_files/ directory v2

Pavel Emelyanov xemul at parallels.com
Thu Aug 25 10:05:22 PDT 2011


On 08/25/2011 09:01 PM, Tejun Heo wrote:
> Hello,
> 
> On Thu, Aug 25, 2011 at 12:29:44PM +0400, Cyrill Gorcunov wrote:
>>  | lr-x------ 1 cyrill cyrill 64 Aug  9 15:25 0x3d73a00000 -> /lib64/ld-2.5.so
>>  | lr-x------ 1 cyrill cyrill 64 Aug  9 15:25 0x3d73c1b000 -> /lib64/ld-2.5.so
>>  | lr-x------ 1 cyrill cyrill 64 Aug  9 15:25 0x3d73c1c000 -> /lib64/ld-2.5.so
>>  | lr-x------ 1 cyrill cyrill 64 Aug  9 15:25 0x3d73e00000 -> /lib64/libc-2.5.so
>>  | lr-x------ 1 cyrill cyrill 64 Aug  9 15:25 0x3d73f4e000 -> /lib64/libc-2.5.so
> 
> I would prefer if the filename included both start and end addresses
> so that it matches the first column of /proc/PID/maps and ls'ing the
> directory is more useful.  What do other people think?

Without 0x at the beginning this is not very convenient, but once we add them it no
longer matches the contents of the /proc/pid/maps.

Just an opinion, do not mind adding <end> to the name.

>> +static int map_files_d_revalidate(struct dentry *dentry, struct nameidata *nd)
>> +{
>> +	struct task_struct *task;
>> +	struct vm_area_struct *vma;
>> +	struct mm_struct *mm;
>> +	struct inode *inode;
>> +
>> +	if (nd && nd->flags & LOOKUP_RCU)
>> +		return -ECHILD;
>> +
>> +	inode = dentry->d_inode;
>> +	task = get_proc_task(inode);
>> +	if (!task)
>> +		goto out;
>> +
>> +	mm = get_task_mm(task);
>> +	put_task_struct(task);
>> +	if (!mm)
>> +		goto out;
>> +
>> +	down_read(&mm->mmap_sem);
>> +	vma = find_exact_vma(mm, PROC_I(inode)->vm_start);
>> +	up_read(&mm->mmap_sem);
>> +	mmput(mm);
>> +
>> +	if (vma)
>> +		return 1;
> 
> Hmm... don't we need the same credential update as
> tid_fd_revalidate()?  If the task seteuid's, we want the permissions
> to change accordingly, right?
> 
> Thanks.
> 



More information about the Containers mailing list