diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 51387586f3a5677346acccebe1a03c0f60795c7a..3f95500a626e4c494ddacc6f22e5d25bc6995bcd 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -2048,7 +2048,9 @@ static int syscall_socket(struct state *state, struct syscall_spec *syscall,
 	result = socket(domain, type, protocol);
 
 	if (end_syscall(state, syscall, CHECK_FD, result, error)) {
-		close(result);
+		if (result >= 0) {
+			close(result);
+		}
 		return STATUS_ERR;
 	}