Thread (1 message) 1 message, 1 author, 2011-06-13

Re: [PATCH] Add cloexec information to fdinfo

flat view

From: KOSAKI Motohiro <hidden>
Date: 2011-06-13 02:54:41
Also in: lkml

(2011/06/10 12:55), drepper@akkadia.org wrote:
quoted hunk
There is one piece of information about a file descriptor which is
currently not visible from the outside: the close-on-exec flag.  The
/proc/PID/fdinfo/* files have the mode information but this is
missing.  Is the following patch acceptable?

What I don't know is whether the RCU locking is needed given that
real locks are taken.  Someone with more knowledge could just
remove those two lines.


Signed-off-by: Ulrich Drepper <redacted>

 base.c |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 14def99..bda3651 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1924,12 +1924,23 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
 				*path = file->f_path;
 				path_get(&file->f_path);
 			}
-			if (info)
+			if (info) {
+				int cloexec;
+				struct fdtable *fdt;
+
+				rcu_read_lock();
+				fdt = files_fdtable(files);
+				cloexec = FD_ISSET(fd, fdt->close_on_exec);
+				rcu_read_unlock();
+
 				snprintf(info, PROC_FDINFO_MAX,
 					 "pos:\t%lli\n"
-					 "flags:\t0%o\n",
+					 "flags:\t0%o\n"
+					 "cloexec: %d\n",
 					 (long long) file->f_pos,
-					 file->f_flags);
+					 file->f_flags,
+					 cloexec);
+			}
 			spin_unlock(&files->file_lock);
 			put_files_struct(files);
 			return 0;
I think this is correct and useful. However I don't know fdtable life cycle detail.
cc to linux-fsdevel.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help