diff --git a/devices/generic.c b/devices/generic.c
index ca5575a27bc97b09b49b3034d4b3d83c49815da5..50dad64a8e0a9e73e281e51a004b385a42839a72 100644
--- a/devices/generic.c
+++ b/devices/generic.c
@@ -408,7 +408,7 @@ int __init ec_gen_init_module(void)
     for_each_netdev(&init_net, netdev) {
         if (netdev->type != ARPHRD_ETHER)
             continue;
-        desc = kmalloc(sizeof(ec_gen_interface_desc_t), GFP_KERNEL);
+        desc = kmalloc(sizeof(ec_gen_interface_desc_t), GFP_ATOMIC);
         if (!desc) {
             ret = -ENOMEM;
             read_unlock(&dev_base_lock);