diff --git a/master/slave.c b/master/slave.c
index 07db78a7283aef95ec8e60625777778e751c9e24..44fbfb90bc9cf4cfe9546227e4cf4c6f7c312c2c 100644
--- a/master/slave.c
+++ b/master/slave.c
@@ -839,12 +839,13 @@ ssize_t ec_slave_write_eeprom(ec_slave_t *slave, /**< EtherCAT slave */
         if (request.state == EC_EEPROM_REQ_QUEUED) {
             list_del(&request.list);
             up(&master->eeprom_sem);
-            return -EPERM;
+            return -EINTR;
         }
-        // request processing: interrupt not possible.
+        // request already processing: interrupt not possible.
         up(&master->eeprom_sem);
     }
 
+    // wait until master FSM has finished processing
     wait_event(master->eeprom_queue, request.state != EC_EEPROM_REQ_BUSY);
 
     return request.state == EC_EEPROM_REQ_COMPLETED ? size : -EIO;