Index: uspace/drv/time/cmos-rtc/cmos-rtc.c
===================================================================
--- uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision 664fc031aeab3e7320e3d3c35adb99a7ab5b1306)
+++ uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision 9673fd36a9940174ed9016c914852db6a26a6e08)
@@ -71,4 +71,6 @@
 	/** true if device is removed */
 	bool removed;
+	/** number of connected clients */
+	int clients_connected;
 	/** time at which the system booted */
 	time_t boottime;
@@ -189,4 +191,5 @@
 
 	rtc->boottime = 0;
+	rtc->clients_connected = 0;
 
 	hw_resource_list_t hw_resources;
@@ -565,4 +568,8 @@
 
 	fibril_mutex_lock(&rtc->mutex);
+	if (rtc->clients_connected > 0) {
+		fibril_mutex_unlock(&rtc->mutex);
+		return EBUSY;
+	}
 
 	rtc->removed = true;
@@ -619,6 +626,8 @@
 	if (rtc->removed)
 		rc = ENXIO;
-	else
+	else {
 		rc = EOK;
+		rtc->clients_connected++;
+	}
 
 	fibril_mutex_unlock(&rtc->mutex);
@@ -633,4 +642,12 @@
 rtc_close(ddf_fun_t *fun)
 {
+	rtc_t *rtc = fun_rtc(fun);
+
+	fibril_mutex_lock(&rtc->mutex);
+
+	rtc->clients_connected--;
+	assert(rtc->clients_connected >= 0);
+
+	fibril_mutex_unlock(&rtc->mutex);
 }
 
