Skip to content

nspawn: become a new root early#4372

Closed
evverx wants to merge 4 commits intosystemd:masterfrom
evverx:fix-u-4.8-fallout
Closed

nspawn: become a new root early#4372
evverx wants to merge 4 commits intosystemd:masterfrom
evverx:fix-u-4.8-fallout

Conversation

@evverx
Copy link
Contributor

@evverx evverx commented Oct 14, 2016

Fixes: #4352

I'll add some comments later.
I've added some comments:

@keszybz , please, try this patch. I've tested:

  • 4.7.6-200.fc24
  • vanilla 4.8

@evverx evverx added nspawn needs-reporter-feedback ❓ There's an unanswered question, the reporter needs to answer labels Oct 14, 2016
fallback_fdinfo:
r = fd_fdinfo_mnt_id(fd, filename, flags, &mount_id);
if (r == -EOPNOTSUPP)
if (IN_SET(r, -EOPNOTSUPP, -EACCES))
Copy link
Contributor Author

@evverx evverx Oct 14, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)

327   mkdir("/proc", 0755 <unfinished ...>
327   <... mkdir resumed> )             = -1 EEXIST (File exists)
327   stat("/proc",  <unfinished ...>
327   <... stat resumed> {st_dev=makedev(8, 1), st_ino=28585, st_mode=S_IFDIR|0755, st_nlink=2, st_uid=0, st_gid=0, st_blksize=1024, st_blocks=4, st_size=1024, st_atime=2016/10/14-02:55:32, st_mtime=2016/
327   mount("proc", "/proc", "proc", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL <unfinished ...>
327   <... mount resumed> )             = 0
327   lstat("/proc",  <unfinished ...>
327   <... lstat resumed> {st_dev=makedev(0, 34), st_ino=1, st_mode=S_IFDIR|0555, st_nlink=75, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:35.971031263,
327   lstat("/proc/sys", {st_dev=makedev(0, 34), st_ino=4026531855, st_mode=S_IFDIR|0555, st_nlink=1, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:39.1630
327   openat(AT_FDCWD, "/proc", O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_PATH) = 11</proc>
327   name_to_handle_at(11</proc>, "sys", {handle_bytes=128}, 0x7ffe3a238604, AT_SYMLINK_FOLLOW) = -1 EOPNOTSUPP (Operation not supported)
327   name_to_handle_at(11</proc>, "", {handle_bytes=128}, 0x7ffe3a238608, AT_EMPTY_PATH) = -1 EOPNOTSUPP (Operation not supported)
327   openat(11</proc>, "sys", O_RDONLY|O_CLOEXEC|O_PATH) = 13</proc/sys>
327   open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
327   close(13</proc/sys> <unfinished ...>
327   <... close resumed> )             = 0
327   close(11</proc> <unfinished ...>
327   <... close resumed> )             = 0
-bash-4.3# ls -ld /proc/
dr-xr-xr-x 76 65534 65534 0 Oct 14 02:57 /proc/

-bash-4.3# ls -ld /proc/1
dr-xr-xr-x 9 root root 0 Oct 14 02:57 /proc/1

-bash-4.3# ls -ld /proc/1/fdinfo
dr-x------ 2 65534 65534 0 Oct 14 03:00 /proc/1/fdinfo

And I'm not sure how to properly fix this.

@tixxdz , any ideas?

minimal reproducer: https://gist.github.com/evverx/ab5cdc72545b6c9033cfc8336dbca66f/fac7e6fbe05c743b1a832cd006406b727b03bd14#file-ns_child-c
how to run/output: https://gist.github.com/evverx/ab5cdc72545b6c9033cfc8336dbca66f/fac7e6fbe05c743b1a832cd006406b727b03bd14#file-how_to_run-md

}
}

r = reset_uid_gid();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@evverx evverx added the ci-fails/needs-rework 🔥 Please rework this, the CI noticed an issue with the PR label Oct 14, 2016
@evverx
Copy link
Contributor Author

evverx commented Oct 14, 2016

======================================================================
ERROR: test_service (__main__.NspawnTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/autopkgtest.Czj41w/build.pWP/systemd-debian/debian/tests/boot-and-services", line 240, in test_service
    subprocess.check_call(['systemctl', 'start', 'systemd-nspawn@c1'])
  File "/usr/lib/python3.5/subprocess.py", line 581, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['systemctl', 'start', 'systemd-nspawn@c1']' returned non-zero exit status 1

======================================================================
FAIL: test_no_failed (__main__.ServicesTest)
No failed units
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/autopkgtest.Czj41w/build.pWP/systemd-debian/debian/tests/boot-and-services", line 60, in test_no_failed
    self.assertEqual(failed, [])
AssertionError: Lists differ: ['[email protected] loaded failed failed Container c1'] != []

First list contains 1 additional elements.
First extra element 0:
'[email protected] loaded failed failed Container c1'

- ['[email protected] loaded failed failed Container c1']
+ []

@evverx
Copy link
Contributor Author

evverx commented Oct 14, 2016

@martinpitt , does the testbed support unified cgroup hierarchy?

@evverx
Copy link
Contributor Author

evverx commented Oct 14, 2016

I've reproduced:

  • --network-veth -U -b
246   unshare(CLONE_NEWCGROUP)          = 0
246   stat("/sys/fs", {st_dev=makedev(0, 28), st_ino=10398, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=65534, st_gid=65534, st_blksize=4096, st_blocks=0, st_size=60, st_atime=2016/10/14-05:04:03.672355479,
246   mkdir("/sys/fs/cgroup", 0755)     = -1 EROFS (Read-only file system)
246   lstat("/sys", {st_dev=makedev(0, 28), st_ino=10393, st_mode=S_IFDIR|0755, st_nlink=9, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=0, st_size=180, st_atime=2016/10/14-05:04:03.620355477, st_mtime=
246   lstat("/sys/fs", {st_dev=makedev(0, 28), st_ino=10398, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=65534, st_gid=65534, st_blksize=4096, st_blocks=0, st_size=60, st_atime=2016/10/14-05:04:03.672355479,
246   lstat("/sys/fs/cgroup", 0x7ffdf97e99d0) = -1 ENOENT (No such file or directory)

hm, wtf? :-)

@martinpitt
Copy link
Contributor

does the testbed support unified cgroup hierarchy?

Partially I suppose -- it's running on kernel 4.4 (Ubuntu 16.04 LTS), so I'm sure there are some recent cgroupv2 features missing.

We have a policy to support ≤ 2 years old kernels, so I think running tests on kernel 4.4 is useful. We can of course add tests on Ubuntu 16.10 (kernel 4.8), or maybe move the i386 one to that, so that we have more variation wrt. kernel and plumbing packages.

@evverx
Copy link
Contributor Author

evverx commented Oct 14, 2016

@martinpitt , thanks!

so I think running tests on kernel 4.4 is useful

Totally agree.

We can of course add tests on Ubuntu 16.10 (kernel 4.8)

It would be great!

Anyway, I've found a bug.

  • mount_all (outer_child) creates container_dir/sys/fs/selinux
  • mount_all (outer_child) doesn't patch container_dir/sys/fs and so on.
  • mount_sysfs (inner_child) tries to create /sys/fs/cgroup
  • This fails
370   stat("/sys/fs", {st_dev=makedev(0, 28), st_ino=13880, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=65534, st_gid=65534, st_blksize=4096, st_blocks=0, st_size=60, st_atime=2016/10/14-05:16:43.398665943, st_mtime=2016/10/14-05:16:43.399665943, st_ctime=2016/10/14-05:16:43.399665943}) = 0
370   mkdir("/sys/fs/cgroup", 0755)     = -1 EACCES (Permission denied)
  • mount_syfs (inner_child) ignores that error and
mount(NULL, "/sys", NULL, MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_REMOUNT|MS_BIND, NULL) = 0
  • mount_cgroups finally fails

@martinpitt
Copy link
Contributor

I started an amd64 and i386 test on Ubuntu 16.10 ("yakkety"), let's see how that goes.

@evverx
Copy link
Contributor Author

evverx commented Oct 14, 2016

@martinpitt , thanks!
That --network-veth-bug doesn't depend on the kernel version. So, test-nspawn will fail :-(

@keszybz keszybz removed the needs-reporter-feedback ❓ There's an unanswered question, the reporter needs to answer label Oct 14, 2016
@keszybz
Copy link
Member

keszybz commented Oct 14, 2016

@evverx Yep, this fixes UNIFIED_CGROUP_HIERARCHY=no systemd-nspawn -U -b for me.

But, sorry to sound like a scratched record, please split your commit into two!

@evverx
Copy link
Contributor Author

evverx commented Oct 15, 2016

@keszybz , ok :-)

Oh, actually, there are so many ways to mount cgroups, sysfs and so on. For example:

UNIFIED_CGROUP_HIERARCHY=no SYSTEMD_NSPAWN_USE_CGNS=no systemd-nspawn -U -b

works fine on 4.8.
I've added a smoke test: #4378
Please, have a look

evverx added a commit to evverx/systemd that referenced this pull request Oct 15, 2016
Basically, this test runs:
```
    systemd-nspawn --register=no -D "$_root" -b
    systemd-nspawn --register=no -D "$_root" --private-network -b
    systemd-nspawn --register=no -D "$_root" -U -b
    systemd-nspawn --register=no -D "$_root" --private-network -U -b
```
and exports the `UNIFIED_CGROUP_HIERARCHY=[yes|no]`, `SYSTEMD_NSPAWN_USE_CGNS=[yes|no]`

Inspired by
* systemd#3589 (comment)
* systemd#4372 (comment)
* systemd#4223 (comment)
* systemd#1555

and so on :-)
@keszybz
Copy link
Member

keszybz commented Oct 16, 2016

@evverx so what the status here? You said you'd add more comments (and maybe split the commit in two)…

@evverx
Copy link
Contributor Author

evverx commented Oct 16, 2016

what the status here?

I'm trying to fix broken stuff. Sadly, every new fix breaks some other stuff. This is why I wrote the TEST-13-NSPAWN-SMOKE.

You said you'd add more comments

Oh, I've added comments:

Updated the PR description.

and maybe split the commit in two

Yes, I'll beautify this PR later. I want to fix all issues first.

evverx added a commit to evverx/systemd that referenced this pull request Oct 18, 2016
Basically, this test runs:
```
    systemd-nspawn --register=no -D "$_root" -b
    systemd-nspawn --register=no -D "$_root" --private-network -b
    systemd-nspawn --register=no -D "$_root" -U -b
    systemd-nspawn --register=no -D "$_root" --private-network -U -b
```
and exports the `UNIFIED_CGROUP_HIERARCHY=[yes|no]`, `SYSTEMD_NSPAWN_USE_CGNS=[yes|no]`

Inspired by
* systemd#3589 (comment)
* systemd#4372 (comment)
* systemd#4223 (comment)
* systemd#1555

and so on :-)
@keszybz keszybz added this to the v232 milestone Oct 20, 2016
@evverx evverx force-pushed the fix-u-4.8-fallout branch from 669c66c to 00b9419 Compare October 20, 2016 06:42
@evverx evverx added reviewed/needs-rework 🔨 PR has been reviewed and needs another round of reworks and removed ci-fails/needs-rework 🔥 Please rework this, the CI noticed an issue with the PR labels Oct 20, 2016
@evverx
Copy link
Contributor Author

evverx commented Oct 20, 2016

@keszybz , updated

Marked as "need-rework": I should split the commit into three

@martinpitt , this commit fixes:

yakkety-amd64
boot-and-services    FAIL

-- Logs begin at Tue 2016-10-18 09:42:55 UTC, end at Tue 2016-10-18 09:43:13 UTC. --
Oct 18 09:43:12 autopkgtest systemd[1]: Starting Container c1...
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Selected user namespace base 239403008 and range 65536.
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Failed to mount n/a on /var/lib/machines/c1/sys/fs/selinux (MS_BIND ""): No such file or directory
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Failed to mount n/a on /var/lib/machines/c1/sys/fs/selinux (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_REMOUNT|MS_BIND ""): Invalid argument
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Timezone Etc/UTC does not exist in container, not updating container timezone.
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Failed to mount cgroup on /sys/fs/cgroup/net_cls,net_prio (MS_NOSUID|MS_NODEV|MS_NOEXEC "net_cls,net_prio"): No such file or directory
Oct 18 09:43:12 autopkgtest systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
Oct 18 09:43:12 autopkgtest systemd-nspawn[1293]: Child died too early.
Oct 18 09:43:12 autopkgtest systemd[1]: Failed to start Container c1.
Oct 18 09:43:12 autopkgtest systemd[1]: [email protected]: Unit entered failed state.
Oct 18 09:43:12 autopkgtest systemd[1]: [email protected]: Failed with result 'exit-code'.

#4378 (comment)

I guess we should run tests on Ubuntu 16.10 (just to be sure :-))

@evverx
Copy link
Contributor Author

evverx commented Oct 20, 2016

Oh, I didn't push the commit "tests: remove an expected failure check in test-nspawn-smoke". Will do

@martinpitt
Copy link
Contributor

I guess we should run tests on Ubuntu 16.10 (just to be sure :-))

Sure, please let me know once you have the PR ready; our infra is fairly loaded right now, so I don't want to start unnecessary test runs.

@evverx
Copy link
Contributor Author

evverx commented Oct 20, 2016

@martinpitt , OK

So, @keszybz , does this PR work for you (and looks reasonable)?
If yes I'll

Copy link
Member

@keszybz keszybz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, apart from one return value mixup.

if (!in_userns) {
r = lchown(path, uid_shift, uid_shift);
if (r < 0)
return r;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return -errno;

r = mkdir_userns(t, mode, in_userns, uid_shift);
if (r < 0)
return r;
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels overly complex, but I don't see an easy way to simplify.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to use normal mkdir_p and then chown in a loop?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's posible. But:

  • we should traverse the subtree twice
  • we should split the path into components twice

Also, I think mkdir and chown is simpler to understand.

Anyway, I'm not sure what is the right solution (I don't like that mkdir_p_internal-copy-pasta too)

@keszybz , @poettering , what do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can always prettify the function later, so I'd just leave the current implementation.

@evverx evverx force-pushed the fix-u-4.8-fallout branch from 00b9419 to 90e2231 Compare October 21, 2016 04:42
@evverx evverx added util-lib tests and removed reviewed/needs-rework 🔨 PR has been reviewed and needs another round of reworks labels Oct 21, 2016
@evverx
Copy link
Contributor Author

evverx commented Oct 21, 2016

@keszybz , updated

@martinpitt , I think this PR is ready. And we can start tests on Ubuntu 16.10
(also, I remove the has-overflow.c. We can revert https://anonscm.debian.org/cgit/pkg-systemd/systemd.git/commit/?id=5fc1668918cf087b85be0408c1684a71fc3d33ad)

keszybz pushed a commit that referenced this pull request Oct 24, 2016
…f/fdinfo

#4372 (comment):
I get `open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)`

327   mkdir("/proc", 0755 <unfinished ...>
327   <... mkdir resumed> )             = -1 EEXIST (File exists)
327   stat("/proc",  <unfinished ...>
327   <... stat resumed> {st_dev=makedev(8, 1), st_ino=28585, st_mode=S_IFDIR|0755, st_nlink=2, st_uid=0, st_gid=0, st_blksize=1024, st_blocks=4, st_size=1024, st_atime=2016/10/14-02:55:32, st_mtime=2016/
327   mount("proc", "/proc", "proc", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL <unfinished ...>
327   <... mount resumed> )             = 0
327   lstat("/proc",  <unfinished ...>
327   <... lstat resumed> {st_dev=makedev(0, 34), st_ino=1, st_mode=S_IFDIR|0555, st_nlink=75, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:35.971031263,
327   lstat("/proc/sys", {st_dev=makedev(0, 34), st_ino=4026531855, st_mode=S_IFDIR|0555, st_nlink=1, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:39.1630
327   openat(AT_FDCWD, "/proc", O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_PATH) = 11</proc>
327   name_to_handle_at(11</proc>, "sys", {handle_bytes=128}, 0x7ffe3a238604, AT_SYMLINK_FOLLOW) = -1 EOPNOTSUPP (Operation not supported)
327   name_to_handle_at(11</proc>, "", {handle_bytes=128}, 0x7ffe3a238608, AT_EMPTY_PATH) = -1 EOPNOTSUPP (Operation not supported)
327   openat(11</proc>, "sys", O_RDONLY|O_CLOEXEC|O_PATH) = 13</proc/sys>
327   open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
327   close(13</proc/sys> <unfinished ...>
327   <... close resumed> )             = 0
327   close(11</proc> <unfinished ...>
327   <... close resumed> )             = 0

-bash-4.3# ls -ld /proc/
dr-xr-xr-x 76 65534 65534 0 Oct 14 02:57 /proc/

-bash-4.3# ls -ld /proc/1
dr-xr-xr-x 9 root root 0 Oct 14 02:57 /proc/1

-bash-4.3# ls -ld /proc/1/fdinfo
dr-x------ 2 65534 65534 0 Oct 14 03:00 /proc/1/fdinfo
keszybz pushed a commit that referenced this pull request Oct 24, 2016
#4372 (comment):

* `mount_all (outer_child)` creates `container_dir/sys/fs/selinux`
* `mount_all (outer_child)` doesn't patch `container_dir/sys/fs` and so on.
* `mount_sysfs (inner_child)` tries to create `/sys/fs/cgroup`
* This fails

370   stat("/sys/fs", {st_dev=makedev(0, 28), st_ino=13880, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=65534, st_gid=65534, st_blksize=4096, st_blocks=0, st_size=60, st_atime=2016/10/14-05:16:43.398665943, st_mtime=2016/10/14-05:16:43.399665943, st_ctime=2016/10/14-05:16:43.399665943}) = 0
370   mkdir("/sys/fs/cgroup", 0755)     = -1 EACCES (Permission denied)

* `mount_syfs (inner_child)` ignores that error and

mount(NULL, "/sys", NULL, MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_REMOUNT|MS_BIND, NULL) = 0

* `mount_cgroups` finally fails
@keszybz
Copy link
Member

keszybz commented Oct 24, 2016

I hate commit messages which have no content, only a github discussion link. I now went through your commits and pasted (what I thought is) the relevant part from each link. For the sake of my blood pressure, please add real commit messages in the future ;) I don't quite believe github discussion links will be available in 5 years when somebody is hunting some bug and trying to understand why is the way it is.

So... indeed #4352 is fixed with this PR, and everything seems functional. Merging. Thanks.

@evverx
Copy link
Contributor Author

evverx commented Oct 24, 2016

I now went through your commits and pasted (what I thought is) the relevant part from each link

@keszybz , thanks!

I hate commit messages which have no content

Well, I agree. But I hate my English too :-) Feel free to suggest the contents. Thanks!

fbuihuu pushed a commit to openSUSE/systemd that referenced this pull request Jul 8, 2021
…f/fdinfo

systemd/systemd#4372 (comment):
I get `open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)`

327   mkdir("/proc", 0755 <unfinished ...>
327   <... mkdir resumed> )             = -1 EEXIST (File exists)
327   stat("/proc",  <unfinished ...>
327   <... stat resumed> {st_dev=makedev(8, 1), st_ino=28585, st_mode=S_IFDIR|0755, st_nlink=2, st_uid=0, st_gid=0, st_blksize=1024, st_blocks=4, st_size=1024, st_atime=2016/10/14-02:55:32, st_mtime=2016/
327   mount("proc", "/proc", "proc", MS_NOSUID|MS_NODEV|MS_NOEXEC, NULL <unfinished ...>
327   <... mount resumed> )             = 0
327   lstat("/proc",  <unfinished ...>
327   <... lstat resumed> {st_dev=makedev(0, 34), st_ino=1, st_mode=S_IFDIR|0555, st_nlink=75, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:35.971031263,
327   lstat("/proc/sys", {st_dev=makedev(0, 34), st_ino=4026531855, st_mode=S_IFDIR|0555, st_nlink=1, st_uid=65534, st_gid=65534, st_blksize=1024, st_blocks=0, st_size=0, st_atime=2016/10/14-03:13:39.1630
327   openat(AT_FDCWD, "/proc", O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_PATH) = 11</proc>
327   name_to_handle_at(11</proc>, "sys", {handle_bytes=128}, 0x7ffe3a238604, AT_SYMLINK_FOLLOW) = -1 EOPNOTSUPP (Operation not supported)
327   name_to_handle_at(11</proc>, "", {handle_bytes=128}, 0x7ffe3a238608, AT_EMPTY_PATH) = -1 EOPNOTSUPP (Operation not supported)
327   openat(11</proc>, "sys", O_RDONLY|O_CLOEXEC|O_PATH) = 13</proc/sys>
327   open("/proc/self/fdinfo/13", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
327   close(13</proc/sys> <unfinished ...>
327   <... close resumed> )             = 0
327   close(11</proc> <unfinished ...>
327   <... close resumed> )             = 0

-bash-4.3# ls -ld /proc/
dr-xr-xr-x 76 65534 65534 0 Oct 14 02:57 /proc/

-bash-4.3# ls -ld /proc/1
dr-xr-xr-x 9 root root 0 Oct 14 02:57 /proc/1

-bash-4.3# ls -ld /proc/1/fdinfo
dr-x------ 2 65534 65534 0 Oct 14 03:00 /proc/1/fdinfo

(cherry picked from commit 548bd57)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants