mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Let socket.ControlMessages Release() the underlying transport.ControlMessages.
PiperOrigin-RevId: 284804370
This commit is contained in:
@@ -43,6 +43,11 @@ type ControlMessages struct {
|
||||
IP tcpip.ControlMessages
|
||||
}
|
||||
|
||||
// Release releases Unix domain socket credentials and rights.
|
||||
func (c *ControlMessages) Release() {
|
||||
c.Unix.Release()
|
||||
}
|
||||
|
||||
// Socket is the interface containing socket syscalls used by the syscall layer
|
||||
// to redirect them to the appropriate implementation.
|
||||
type Socket interface {
|
||||
|
||||
@@ -764,7 +764,7 @@ func recvSingleMsg(t *kernel.Task, s socket.Socket, msgPtr usermem.Addr, flags i
|
||||
}
|
||||
if !cms.Unix.Empty() {
|
||||
mflags |= linux.MSG_CTRUNC
|
||||
cms.Unix.Release()
|
||||
cms.Release()
|
||||
}
|
||||
|
||||
if int(msg.Flags) != mflags {
|
||||
@@ -784,7 +784,7 @@ func recvSingleMsg(t *kernel.Task, s socket.Socket, msgPtr usermem.Addr, flags i
|
||||
if e != nil {
|
||||
return 0, syserror.ConvertIntr(e.ToError(), kernel.ERESTARTSYS)
|
||||
}
|
||||
defer cms.Unix.Release()
|
||||
defer cms.Release()
|
||||
|
||||
controlData := make([]byte, 0, msg.ControlLen)
|
||||
|
||||
@@ -885,7 +885,7 @@ func recvFrom(t *kernel.Task, fd int32, bufPtr usermem.Addr, bufLen uint64, flag
|
||||
}
|
||||
|
||||
n, _, sender, senderLen, cm, e := s.RecvMsg(t, dst, int(flags), haveDeadline, deadline, nameLenPtr != 0, 0)
|
||||
cm.Unix.Release()
|
||||
cm.Release()
|
||||
if e != nil {
|
||||
return 0, syserror.ConvertIntr(e.ToError(), kernel.ERESTARTSYS)
|
||||
}
|
||||
@@ -1071,7 +1071,7 @@ func sendSingleMsg(t *kernel.Task, s socket.Socket, file *fs.File, msgPtr userme
|
||||
n, e := s.SendMsg(t, src, to, int(flags), haveDeadline, deadline, controlMessages)
|
||||
err = handleIOError(t, n != 0, e.ToError(), kernel.ERESTARTSYS, "sendmsg", file)
|
||||
if err != nil {
|
||||
controlMessages.Unix.Release()
|
||||
controlMessages.Release()
|
||||
}
|
||||
return uintptr(n), err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user