Index: uspace/lib/usb/src/pipes.c
===================================================================
--- uspace/lib/usb/src/pipes.c	(revision eb1a2f485e907e821965b3aafca2d8a5355f3518)
+++ uspace/lib/usb/src/pipes.c	(revision d3880aa4fa4d48c50154d29c2d4ff2acfd7035ae)
@@ -200,5 +200,5 @@
 	assert(pipe);
 
-	if (pipe->hc_phone >= 0) {
+	if (usb_endpoint_pipe_is_session_started(pipe)) {
 		return EBUSY;
 	}
@@ -226,5 +226,5 @@
 	assert(pipe);
 
-	if (pipe->hc_phone < 0) {
+	if (!usb_endpoint_pipe_is_session_started(pipe)) {
 		return ENOENT;
 	}
@@ -238,4 +238,17 @@
 
 	return EOK;
+}
+
+/** Tell whether a session is started (open) on the endpoint pipe.
+ *
+ * The expected usage of this function is in assertions for some
+ * nested functions.
+ *
+ * @param pipe Endpoint pipe in question.
+ * @return Whether @p pipe has opened a session.
+ */
+bool usb_endpoint_pipe_is_session_started(usb_endpoint_pipe_t *pipe)
+{
+	return (pipe->hc_phone >= 0);
 }
 
Index: uspace/lib/usb/src/pipesio.c
===================================================================
--- uspace/lib/usb/src/pipesio.c	(revision eb1a2f485e907e821965b3aafca2d8a5355f3518)
+++ uspace/lib/usb/src/pipesio.c	(revision d3880aa4fa4d48c50154d29c2d4ff2acfd7035ae)
@@ -148,5 +148,5 @@
 	}
 
-	if (pipe->hc_phone < 0) {
+	if (!usb_endpoint_pipe_is_session_started(pipe)) {
 		return EBADF;
 	}
@@ -255,5 +255,5 @@
 	}
 
-	if (pipe->hc_phone < 0) {
+	if (!usb_endpoint_pipe_is_session_started(pipe)) {
 		return EBADF;
 	}
@@ -369,5 +369,5 @@
 	}
 
-	if (pipe->hc_phone < 0) {
+	if (!usb_endpoint_pipe_is_session_started(pipe)) {
 		return EBADF;
 	}
@@ -481,5 +481,5 @@
 	}
 
-	if (pipe->hc_phone < 0) {
+	if (!usb_endpoint_pipe_is_session_started(pipe)) {
 		return EBADF;
 	}
