-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1.1] Fix failed exec after systemctl daemon-reload (regression in 1.1.3) #3554
[1.1] Fix failed exec after systemctl daemon-reload (regression in 1.1.3) #3554
Conversation
ff7cdd1
to
98adcb5
Compare
CI failure is to be fixed by #3558 Still no regression test :( |
Tried a build from this PR, and that fixes the issue reported in moby/moby#43960 (reply in thread) |
98adcb5
to
e6de45d
Compare
Thanks, but I don't see the main PR, isn't the main branch affected? |
This comment was marked as outdated.
This comment was marked as outdated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I'm ok with looking for a test as follow-up
good point; PR for main is in #3559, but indeed still in draft; do we want the one in main first? |
This comment was marked as outdated.
This comment was marked as outdated.
e6de45d
to
7054801
Compare
This comment was marked as outdated.
This comment was marked as outdated.
7054801
to
8630d3f
Compare
Please run git cherry-pick with -x for tracking the main commit |
That is what I usually do, although not in this case. The reasons are:
I can certainly add a reference to commit 58b1374 to the commit message. |
A regression reported for runc v1.1.3 says that "runc exec -t" fails after doing "systemctl daemon-reload": > exec failed: unable to start container process: open /dev/pts/0: operation not permitted: unknown Apparently, with commit 7219387 we are no longer adding "DeviceAllow=char-pts rwm" rule (because os.Stat("char-pts") returns ENOENT). The bug can only be seen after "systemctl daemon-reload" because runc also applies the same rules manually (by writing to devices.allow for cgroup v1), and apparently reloading systemd leads to re-applying the rules that systemd has (thus removing the char-pts access). The fix is to do os.Stat only for "/dev" paths. Also, emit a warning that the path was skipped. Since the original idea was to emit less warnings, demote the level to debug. Note this also fixes the issue of not adding "m" permission for block-* and char-* devices. A test case is added, which reliably fails before the fix on both cgroup v1 and v2. This is a backport of commit 58b1374 to release-1.1 branch. Fixes: opencontainers#3551 Fixes: 7219387 Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
8630d3f
to
204c673
Compare
Done; PTAL @AkihiroSuda |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@kolyshkin @AkihiroSuda @cyphar should we do a |
A regression reported for runc v1.1.3 says that after systemctl
daemon-reload runc exec fails:
Apparently, with commit 7219387 we are no longer adding
"DeviceAllow=char-pts rwm" rule (because os.Stat("char-pts") returns
ENOENT).
The bug can only be seen after "systemctl daemon-reload" because runc
also applies the same rules manually (by writing to devices.allow for
cgroup v1), and apparently reloading systemd leads to re-applying the
rules that systemd has (thus removing the char-pts access).
The fix is to do os.Stat only for "/dev" paths.
Also, emit a warning that the path was skipped. Since the original idea
was to emit less warnings, demote the level to debug.
Note this also fixes the issue of not adding "m" permission for block-*
and char-* devices.
A test case is added, which reliably fails before the fix
on both cgroup v1 and v2.
Fixes: #3551
Fixes: 7219387