diff options
author | Ian Lewis <ianlewis@google.com> | 2021-06-13 19:21:46 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-06-13 19:23:55 -0700 |
commit | 5c9e84622305dc9fd4e9b81eeb7309b8a894f99e (patch) | |
tree | cfa81aaac2356fc205b5f55a701d30ca3c2786bf /pkg/safecopy | |
parent | b92e8ee8d6744d81383f4265faa008ccce894f5e (diff) |
Remove usermem dependency from marshal
Both marshal and usermem are depended on by many packages and a dependency on
marshal can often create circular dependencies. marshal should consider adding
internal dependencies carefully moving forward.
Fixes #6160
PiperOrigin-RevId: 379199882
Diffstat (limited to 'pkg/safecopy')
-rw-r--r-- | pkg/safecopy/BUILD | 1 | ||||
-rw-r--r-- | pkg/safecopy/safecopy_unsafe.go | 17 |
2 files changed, 6 insertions, 12 deletions
diff --git a/pkg/safecopy/BUILD b/pkg/safecopy/BUILD index b77c40279..db5787302 100644 --- a/pkg/safecopy/BUILD +++ b/pkg/safecopy/BUILD @@ -18,6 +18,7 @@ go_library( ], visibility = ["//:sandbox"], deps = [ + "//pkg/abi/linux", "//pkg/syserror", "@org_golang_x_sys//unix:go_default_library", ], diff --git a/pkg/safecopy/safecopy_unsafe.go b/pkg/safecopy/safecopy_unsafe.go index 3ec73f296..2365b2c0d 100644 --- a/pkg/safecopy/safecopy_unsafe.go +++ b/pkg/safecopy/safecopy_unsafe.go @@ -20,6 +20,7 @@ import ( "unsafe" "golang.org/x/sys/unix" + "gvisor.dev/gvisor/pkg/abi/linux" ) // maxRegisterSize is the maximum register size used in memcpy and memclr. It @@ -342,15 +343,7 @@ func errorFromFaultSignal(addr uintptr, sig int32) error { // handler however, and if this is function is being used externally then the // same courtesy is expected. func ReplaceSignalHandler(sig unix.Signal, handler uintptr, previous *uintptr) error { - // TODO(gvisor.dev/issue/6160): This struct is the same as linux.SigAction. - // Once the usermem dependency is removed from primitive, delete this replica - // and remove IFTTT comments in abi/linux/signal.go. - var sa struct { - handler uintptr - flags uint64 - restorer uintptr - mask uint64 - } + var sa linux.SigAction const maskLen = 8 // Get the existing signal handler information, and save the current @@ -361,14 +354,14 @@ func ReplaceSignalHandler(sig unix.Signal, handler uintptr, previous *uintptr) e } // Fail if there isn't a previous handler. - if sa.handler == 0 { + if sa.Handler == 0 { return fmt.Errorf("previous handler for signal %x isn't set", sig) } - *previous = sa.handler + *previous = uintptr(sa.Handler) // Install our own handler. - sa.handler = handler + sa.Handler = uint64(handler) if _, _, e := unix.RawSyscall6(unix.SYS_RT_SIGACTION, uintptr(sig), uintptr(unsafe.Pointer(&sa)), 0, maskLen, 0, 0); e != 0 { return e } |