diff --git a/gck-rpc-module.c b/gck-rpc-module.c
index 67794acc1bba43bf501196c067aa02fa464c7bed..c62162c1d1fed2101bd9a3ffce7f2e3871c1254d 100644
--- a/gck-rpc-module.c
+++ b/gck-rpc-module.c
@@ -421,7 +421,7 @@ static CK_RV call_write(CallState * cs, unsigned char *data, size_t len)
 			return CKR_DEVICE_ERROR;
 		}
 
-		r = write(fd, data, len);
+		r = send(fd, data, len, 0);
 
 		if (r == -1) {
 			if (errno == EPIPE) {
@@ -460,7 +460,7 @@ static CK_RV call_read(CallState * cs, unsigned char *data, size_t len)
 			return CKR_DEVICE_ERROR;
 		}
 
-		r = read(fd, data, len);
+		r = recv(fd, data, len, 0);
 
 		if (r == 0) {
 			warning(("couldn't receive data: daemon closed connection"));