Let socket.ControlMessages Release() the underlying transport.ControlMessages.

PiperOrigin-RevId: 284804370
This commit is contained in:
Dean Deng
2019-12-10 11:36:08 -08:00
committed by gVisor bot
parent f47eaffd5c
commit f6e87be82f
2 changed files with 9 additions and 4 deletions
+5
View File
@@ -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 {
+4 -4
View File
@@ -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
}