mirror of
https://github.com/golang/go
synced 2024-11-22 21:50:03 -07:00
syscall: remove cloexecSocket fallback path
Support for Linux kernel versions requiring the fallback to CloseOnExec was dropped from recent Go versions. The minimum Linux kernel version is 2.6.32 as of Go 1.18. The SOCK_CLOEXEC flag for the socket syscall is supported since kernel version 2.6.27. Follows a similar change for net.sysSocket in CL 403634. For #45964 Change-Id: I8b6311f07c4ed7900a9af3ecb2e146c49db08665 Reviewed-on: https://go-review.googlesource.com/c/go/+/422374 Reviewed-by: Joedian Reid <joedian@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
parent
5729419420
commit
fe196a064e
@ -48,7 +48,7 @@ type iflags struct {
|
||||
|
||||
// Deprecated: Use golang.org/x/net/bpf instead.
|
||||
func SetLsfPromisc(name string, m bool) error {
|
||||
s, e := cloexecSocket(AF_INET, SOCK_DGRAM, 0)
|
||||
s, e := Socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, 0)
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ func newNetlinkRouteRequest(proto, seq, family int) []byte {
|
||||
// NetlinkRIB returns routing information base, as known as RIB, which
|
||||
// consists of network facility information, states and parameters.
|
||||
func NetlinkRIB(proto, family int) ([]byte, error) {
|
||||
s, err := cloexecSocket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)
|
||||
s, err := Socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -1,29 +0,0 @@
|
||||
// Copyright 2019 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package syscall
|
||||
|
||||
// This is a stripped down version of sysSocket from net/sock_cloexec.go.
|
||||
func cloexecSocket(family, sotype, proto int) (int, error) {
|
||||
s, err := Socket(family, sotype|SOCK_CLOEXEC, proto)
|
||||
switch err {
|
||||
case nil:
|
||||
return s, nil
|
||||
default:
|
||||
return -1, err
|
||||
case EINVAL:
|
||||
}
|
||||
|
||||
ForkLock.RLock()
|
||||
s, err = Socket(family, sotype, proto)
|
||||
if err == nil {
|
||||
CloseOnExec(s)
|
||||
}
|
||||
ForkLock.RUnlock()
|
||||
if err != nil {
|
||||
Close(s)
|
||||
return -1, err
|
||||
}
|
||||
return s, nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user