diff --git a/master/datagram.c b/master/datagram.c
index a0304bd699152411e379c8215bc9113bc9c4d515..ff5d03f845522c68d826e719317a78c9e86bdab9 100644
--- a/master/datagram.c
+++ b/master/datagram.c
@@ -115,7 +115,7 @@ int ec_datagram_prealloc(ec_datagram_t *datagram, /**< EtherCAT datagram */
         datagram->mem_size = 0;
     }
 
-    if (!(datagram->data = kmalloc(size, GFP_KERNEL))) {
+    if (!(datagram->data = kmalloc(size, GFP_ATOMIC))) {
         EC_ERR("Failed to allocate %i bytes of datagram memory!\n", size);
         return -1;
     }