--- drivers/net/wan/lmc/lmc_main.c.orig	Thu May 17 12:03:49 2001
+++ drivers/net/wan/lmc/lmc_main.c	Mon May 21 20:13:49 2001
@@ -500,14 +500,17 @@
                             break;
                     }
 
-                    data = kmalloc(xc.len, GFP_KERNEL);
+                    data = kmalloc(xc.len, GFP_ATOMIC);
                     if(data == 0x0){
                             printk(KERN_WARNING "%s: Failed to allocate memory for copy\n", dev->name);
                             ret = -ENOMEM;
                             break;
                     }
                     
-                    LMC_COPY_FROM_USER(data, xc.data, xc.len);
+		    if(copy_from_user(data, xc.data, xc.len)){
+		            kfree(data);
+		            return -EFAULT;
+		    }
 
                     printk("%s: Starting load of data Len: %d at 0x%p == 0x%p\n", dev->name, xc.len, xc.data, data);
 
