diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-18 13:06:18 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-18 13:06:18 +0300 |
| commit | 808c2549bfb17d22388a197d361a07ce0fc8f54f (patch) | |
| tree | 38c0e613addc04fe46156c38b92bdf13d7c9a2c0 | |
| parent | 928791f23b69d11441608fd48b317fe28a7ac89d (diff) | |
Fix task 35: treat negative fcntl errno as failure
| -rw-r--r-- | internal/eventloop_exit.go | 4 | ||||
| -rw-r--r-- | internal/eventloop_test.go | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/internal/eventloop_exit.go b/internal/eventloop_exit.go index a9dd4c5..c74ecea 100644 --- a/internal/eventloop_exit.go +++ b/internal/eventloop_exit.go @@ -253,8 +253,8 @@ func (e *eventLoop) handleFcntlExit(ep *event.Pair, fcntlEv *types.FcntlEvent) b e.recyclePair(ep, "Dropped malformed fcntl exit event") return false } - // Syscall returned -1, nothing was changed with the fd - if retEvent.Ret == -1 { + // Syscall returned a negative errno, nothing was changed with the fd. + if retEvent.Ret < 0 { return true } diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go index c5aebe4..98f2209 100644 --- a/internal/eventloop_test.go +++ b/internal/eventloop_test.go @@ -2143,7 +2143,7 @@ func makeFcntlErrorTestData(t *testing.T) (td testData) { fcntlEnterEv2, fcntlEnterBytes2 := makeEnterFcntlEvent(t, defaulTime+400, defaultPid, defaultTid, fd, syscall.F_SETFL, uint64(syscall.O_NONBLOCK)) td.rawTracepoints = append(td.rawTracepoints, fcntlEnterBytes2) - fcntlExitEv2, fcntlExitBytes2 := makeExitRetEvent(t, defaulTime+500, defaultPid, defaultTid, types.SYS_EXIT_FCNTL, -1) // Error return + fcntlExitEv2, fcntlExitBytes2 := makeExitRetEvent(t, defaulTime+500, defaultPid, defaultTid, types.SYS_EXIT_FCNTL, -9) // Realistic kernel errno return td.rawTracepoints = append(td.rawTracepoints, fcntlExitBytes2) // Validate F_SETFL error didn't change flags |
