libprocstat: For MAP_PRIVATE, do not consider the file open for writing.
If a file is mapped with with MAP_PRIVATE, no write permission is required and changes do not end up in the file. Therefore, tools like fuser and fstat should not show the file as open for writing. The protection as displayed by procstat -v still includes write in this case, and shows 'C' for copy-on-write.
This commit is contained in:
parent
0164b6b71f
commit
2c34fd40cf
@ -522,7 +522,8 @@ procstat_getfiles_kvm(struct procstat *procstat, struct kinfo_proc *kp, int mmap
|
||||
fflags = 0;
|
||||
if (prot & VM_PROT_READ)
|
||||
fflags = PS_FST_FFLAG_READ;
|
||||
if (prot & VM_PROT_WRITE)
|
||||
if ((vmentry.eflags & MAP_ENTRY_COW) == 0 &&
|
||||
prot & VM_PROT_WRITE)
|
||||
fflags |= PS_FST_FFLAG_WRITE;
|
||||
|
||||
/*
|
||||
@ -696,7 +697,8 @@ procstat_getfiles_sysctl(struct procstat *procstat, struct kinfo_proc *kp, int m
|
||||
fflags = 0;
|
||||
if (kve->kve_protection & KVME_PROT_READ)
|
||||
fflags = PS_FST_FFLAG_READ;
|
||||
if (kve->kve_protection & KVME_PROT_WRITE)
|
||||
if ((kve->kve_flags & KVME_FLAG_COW) == 0 &&
|
||||
kve->kve_protection & KVME_PROT_WRITE)
|
||||
fflags |= PS_FST_FFLAG_WRITE;
|
||||
offset = kve->kve_offset;
|
||||
refcount = kve->kve_ref_count;
|
||||
|
Loading…
Reference in New Issue
Block a user