mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Initialize POSIX queues' registry after creating a new IPCNamespace.
Updates #136
This commit is contained in:
@@ -92,6 +92,8 @@ func (i *IPCNamespace) InitPosixQueues(ctx context.Context, vfsObj *vfs.VirtualF
|
||||
}
|
||||
|
||||
// PosixQueues returns the posix message queue registry for this namespace.
|
||||
//
|
||||
// Precondition: i.InitPosixQueues must have been called.
|
||||
func (i *IPCNamespace) PosixQueues() *mq.Registry {
|
||||
return i.posixQueues
|
||||
}
|
||||
|
||||
@@ -401,6 +401,11 @@ func (k *Kernel) Init(args InitKernelArgs) error {
|
||||
return fmt.Errorf("failed to initialize VFS: %v", err)
|
||||
}
|
||||
|
||||
err := k.rootIPCNamespace.InitPosixQueues(ctx, &k.vfs, auth.CredentialsFromContext(ctx))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create mqfs filesystem: %v", err)
|
||||
}
|
||||
|
||||
pipeFilesystem, err := pipefs.NewFilesystem(&k.vfs)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create pipefs filesystem: %v", err)
|
||||
|
||||
@@ -103,6 +103,9 @@ func (t *Task) Clone(args *linux.CloneArgs) (ThreadID, *SyscallControl, error) {
|
||||
ipcns := t.IPCNamespace()
|
||||
if args.Flags&linux.CLONE_NEWIPC != 0 {
|
||||
ipcns = NewIPCNamespace(userns)
|
||||
if VFS2Enabled {
|
||||
ipcns.InitPosixQueues(t, t.k.VFS(), creds)
|
||||
}
|
||||
} else {
|
||||
ipcns.IncRef()
|
||||
}
|
||||
@@ -464,6 +467,9 @@ func (t *Task) Unshare(flags int32) error {
|
||||
// namespace"
|
||||
t.ipcns.DecRef(t)
|
||||
t.ipcns = NewIPCNamespace(creds.UserNamespace)
|
||||
if VFS2Enabled {
|
||||
t.ipcns.InitPosixQueues(t, t.k.VFS(), creds)
|
||||
}
|
||||
}
|
||||
var oldFDTable *FDTable
|
||||
if flags&linux.CLONE_FILES != 0 {
|
||||
|
||||
Reference in New Issue
Block a user