aboutsummaryrefslogtreecommitdiff
path: root/tests/lock.c
diff options
context:
space:
mode:
authorRobert Noland <rnoland@2hip.net>2007-10-17 13:25:31 -0700
committerEric Anholt <eric@anholt.net>2007-10-17 13:26:10 -0700
commit2c5c18fbd394f419a9cf650720a1187440c643cd (patch)
tree624447358e6c4d1fd41425fee627b2c858d89143 /tests/lock.c
parente7523d337997018a86530266a8f3f88dd061c138 (diff)
Bug #12838: Fix lock test client vs. server master race and misplaced closes.
Diffstat (limited to 'tests/lock.c')
-rw-r--r--tests/lock.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/tests/lock.c b/tests/lock.c
index 3f627558..86caa281 100644
--- a/tests/lock.c
+++ b/tests/lock.c
@@ -87,8 +87,6 @@ client_auth(int drmfd)
struct drm_auth auth;
int ret;
- wait_event(0, SERVER_READY);
-
/* Get a client magic number and pass it to the master for auth. */
ret = ioctl(drmfd, DRM_IOCTL_GET_MAGIC, &auth);
if (ret == -1)
@@ -172,8 +170,6 @@ static void test_open_close_locked(drmfd)
ret = drmUnlock(drmfd, lock1);
if (ret != 0)
errx(1, "lock lost during open/close by same pid");
-
- close(drmfd);
}
static void client()
@@ -181,6 +177,8 @@ static void client()
int drmfd, ret;
unsigned int time;
+ wait_event(0, SERVER_READY);
+
/* XXX: Should make sure we open the same DRM as the master */
drmfd = drm_open_any();
@@ -201,6 +199,7 @@ static void client()
send_event(0, CLIENT_LOCKED);
ret = write(commfd[0], &time, sizeof(time));
+ close(drmfd);
exit(0);
}
@@ -238,6 +237,8 @@ static void server()
if (client_time < unlock_time)
errx(1, "Client took lock before server released it");
+
+ close(drmfd);
}
int main(int argc, char **argv)