Index: uspace/srv/test/chardev-test/main.c
===================================================================
--- uspace/srv/test/chardev-test/main.c	(revision 5fc82448bbd01f2950b893989095ed4c1b1c99b3)
+++ uspace/srv/test/chardev-test/main.c	(revision 4c6fd56b8079778d8d40e0d5ffc6a1e8e8ad2b5b)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2017 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -118,9 +118,10 @@
 {
 	errno_t rc;
+	loc_srv_t *srv;
 
 	printf("%s: Character device test service\n", NAME);
 	async_set_fallback_port_handler(chardev_test_connection, NULL);
 
-	rc = loc_server_register(NAME);
+	rc = loc_server_register(NAME, &srv);
 	if (rc != EOK) {
 		printf("%s: Failed registering server.: %s\n", NAME, str_error(rc));
@@ -140,20 +141,23 @@
 	partialx_srvs.sarg = NULL;
 
-	rc = loc_service_register(SERVICE_NAME_CHARDEV_TEST_SMALLX, &smallx_svc_id);
+	rc = loc_service_register(srv, SERVICE_NAME_CHARDEV_TEST_SMALLX,
+	    &smallx_svc_id);
 	if (rc != EOK) {
 		printf("%s: Failed registering service.: %s\n", NAME, str_error(rc));
-		return rc;
-	}
-
-	rc = loc_service_register(SERVICE_NAME_CHARDEV_TEST_LARGEX, &largex_svc_id);
+		goto error;
+	}
+
+	rc = loc_service_register(srv, SERVICE_NAME_CHARDEV_TEST_LARGEX,
+	    &largex_svc_id);
 	if (rc != EOK) {
 		printf("%s: Failed registering service.: %s\n", NAME, str_error(rc));
-		return rc;
-	}
-
-	rc = loc_service_register(SERVICE_NAME_CHARDEV_TEST_PARTIALX, &partialx_svc_id);
+		goto error;
+	}
+
+	rc = loc_service_register(srv, SERVICE_NAME_CHARDEV_TEST_PARTIALX,
+	    &partialx_svc_id);
 	if (rc != EOK) {
 		printf("%s: Failed registering service.: %s\n", NAME, str_error(rc));
-		return rc;
+		goto error;
 	}
 
@@ -164,4 +168,13 @@
 	/* Not reached */
 	return 0;
+error:
+	if (smallx_svc_id != 0)
+		loc_service_unregister(srv, smallx_svc_id);
+	if (largex_svc_id != 0)
+		loc_service_unregister(srv, largex_svc_id);
+	if (partialx_svc_id != 0)
+		loc_service_unregister(srv, partialx_svc_id);
+	loc_server_unregister(srv);
+	return rc;
 }
 
Index: uspace/srv/test/ipc-test/main.c
===================================================================
--- uspace/srv/test/ipc-test/main.c	(revision 5fc82448bbd01f2950b893989095ed4c1b1c99b3)
+++ uspace/srv/test/ipc-test/main.c	(revision 4c6fd56b8079778d8d40e0d5ffc6a1e8e8ad2b5b)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2018 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -222,4 +222,5 @@
 {
 	errno_t rc;
+	loc_srv_t *srv;
 
 	printf("%s: IPC test service\n", NAME);
@@ -232,5 +233,5 @@
 	}
 
-	rc = loc_server_register(NAME);
+	rc = loc_server_register(NAME, &srv);
 	if (rc != EOK) {
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server. (%s)\n",
@@ -239,6 +240,7 @@
 	}
 
-	rc = loc_service_register(SERVICE_NAME_IPC_TEST, &svc_id);
-	if (rc != EOK) {
+	rc = loc_service_register(srv, SERVICE_NAME_IPC_TEST, &svc_id);
+	if (rc != EOK) {
+		loc_server_unregister(srv);
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service. (%s)\n",
 		    str_error(rc));
