From 62b2dd31afcb0f978ddb4f05bba2343049842e74 Mon Sep 17 00:00:00 2001 From: Gleb Smirnoff Date: Thu, 8 Jun 2017 06:13:53 +0000 Subject: [PATCH] Make the test to leave one connection on the incomplete queue before exiting. This examines some race conditions in kernel. --- .../sockets/accf_data_attach/accf_data_attach.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/regression/sockets/accf_data_attach/accf_data_attach.c b/tools/regression/sockets/accf_data_attach/accf_data_attach.c index 27f270ba1c46..ba84e9dc2bbf 100644 --- a/tools/regression/sockets/accf_data_attach/accf_data_attach.c +++ b/tools/regression/sockets/accf_data_attach/accf_data_attach.c @@ -233,6 +233,20 @@ main(void) errx(-1, "not ok 11 - accept #2 %s", strerror(errno)); printf("ok 11 - accept\n"); +#if 1 + /* + * XXXGL: this doesn't belong to the test itself, but is known + * to examine rarely examined paths in the kernel. Intentionally + * leave a socket on the incomplete queue, before the program + * exits. + */ + so = socket(PF_INET, SOCK_STREAM, 0); + if (so == -1) + errx(-1, "not ok 12 - socket: %s", strerror(errno)); + if (connect(so, (struct sockaddr *)&sin, sizeof(sin)) < 0) + errx(-1, "not ok 12 - connect %s", strerror(errno)); +#endif + /* * Step 11: Remove accept filter. After removing the accept filter * getsockopt() should fail with EINVAL.