diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index a9ac61bc68c0ee7c5e1a2212b5af47132d88313e..63b4e9f5f5aafcb42d3eae9200337ceee0d0d401 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -4563,8 +4563,6 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall,
 
 	result = setsockopt(live_fd, level, optname, optval, optlen);
 
-	return end_syscall(state, syscall, CHECK_EXACT, result, error);
-
 #if defined(SCTP_HMAC_IDENT)
 	free(hmacalgo);
 #endif
@@ -4574,6 +4572,8 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall,
 #if defined(SCTP_RESET_STREAMS)
 	free(reset_streams);
 #endif
+
+	return end_syscall(state, syscall, CHECK_EXACT, result, error);
 }
 
 static int syscall_poll(struct state *state, struct syscall_spec *syscall,