aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/autoroot.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-17 01:43:11 +0900
committerOphestra <cat@gensokyo.uk>2025-08-17 01:43:11 +0900
commit9c1a5d43bad802aa0ad717ea603c51f7b0408cdd (patch)
tree2127e3b73a91fe1cd5cfa8583a6a1c145f2c37bd /container/autoroot.go
parent8aa65f28c68815db9dd1f246ee2656759574c3bb (diff)
container: enforce nonrepeatable autoetc and autoroot
These keep track of some internal state, and they don't make sense to have multiple instances of anyway, so instead of dealing with that, just make them nonrepetable. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/autoroot.go')
-rw-r--r--container/autoroot.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/container/autoroot.go b/container/autoroot.go
index b155145c..215a7bb3 100644
--- a/container/autoroot.go
+++ b/container/autoroot.go
@@ -56,6 +56,11 @@ func (r *AutoRootOp) early(state *setupState) error {
}
func (r *AutoRootOp) apply(state *setupState) error {
+ if state.nonrepeatable&nrAutoRoot != 0 {
+ return msg.WrapErr(syscall.EINVAL, "autoroot is not repeatable")
+ }
+ state.nonrepeatable |= nrAutoRoot
+
for _, op := range r.resolved {
msg.Verbosef("%s %s", op.prefix(), op)
if err := op.apply(state); err != nil {