]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/hippi/rrunner.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / drivers / net / hippi / rrunner.c
index 9b0d6148e994e82e476f1ef315eb7e4a731ddffe..1ce6239a484952739627988f307fc80da17c9eb5 100644 (file)
@@ -1616,17 +1616,14 @@ static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
                        return -EPERM;
                }
 
-               image = kmalloc(EEPROM_WORDS * sizeof(u32), GFP_KERNEL);
-               oldimage = kmalloc(EEPROM_WORDS * sizeof(u32), GFP_KERNEL);
-               if (!image || !oldimage) {
-                       error = -ENOMEM;
-                       goto wf_out;
-               }
+               image = memdup_user(rq->ifr_data, EEPROM_BYTES);
+               if (IS_ERR(image))
+                       return PTR_ERR(image);
 
-               error = copy_from_user(image, rq->ifr_data, EEPROM_BYTES);
-               if (error) {
-                       error = -EFAULT;
-                       goto wf_out;
+               oldimage = kmalloc(EEPROM_BYTES, GFP_KERNEL);
+               if (!oldimage) {
+                       kfree(image);
+                       return -ENOMEM;
                }
 
                if (rrpriv->fw_running){