|
@@ -1919,6 +1919,14 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
|
|
|
spin_lock(&files->file_lock);
|
|
|
file = fcheck_files(files, fd);
|
|
|
if (file) {
|
|
|
+ unsigned int f_flags;
|
|
|
+ struct fdtable *fdt;
|
|
|
+
|
|
|
+ fdt = files_fdtable(files);
|
|
|
+ f_flags = file->f_flags & ~O_CLOEXEC;
|
|
|
+ if (FD_ISSET(fd, fdt->close_on_exec))
|
|
|
+ f_flags |= O_CLOEXEC;
|
|
|
+
|
|
|
if (path) {
|
|
|
*path = file->f_path;
|
|
|
path_get(&file->f_path);
|
|
@@ -1928,7 +1936,7 @@ static int proc_fd_info(struct inode *inode, struct path *path, char *info)
|
|
|
"pos:\t%lli\n"
|
|
|
"flags:\t0%o\n",
|
|
|
(long long) file->f_pos,
|
|
|
- file->f_flags);
|
|
|
+ f_flags);
|
|
|
spin_unlock(&files->file_lock);
|
|
|
put_files_struct(files);
|
|
|
return 0;
|