]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Staging: Use kmemdup
authorJulia Lawall <julia@diku.dk>
Sat, 15 May 2010 21:21:43 +0000 (23:21 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 17 May 2010 23:31:15 +0000 (16:31 -0700)
Use kmemdup when some other buffer is immediately copied into the
allocated region.

A simplified version of the semantic patch that makes this change is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
expression from,to,size,flag;
statement S;
@@

-  to = \(kmalloc\|kzalloc\)(size,flag);
+  to = kmemdup(from,size,flag);
   if (to==NULL || ...) S
-  memcpy(to, from, size);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
16 files changed:
drivers/staging/comedi/drivers/usbdux.c
drivers/staging/comedi/drivers/usbduxfast.c
drivers/staging/hv/vmbus.c
drivers/staging/line6/dumprequest.c
drivers/staging/line6/pod.c
drivers/staging/line6/variax.c
drivers/staging/pohmelfs/config.c
drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c
drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c
drivers/staging/usbip/stub_rx.c

index df71515c7a30dc28e605eca7e9682a3b59d13747..86f035d00675067b8d020cbc90ad4b2ca97eaaf5 100644 (file)
@@ -840,13 +840,12 @@ static int firmwareUpload(struct usbduxsub *usbduxsub,
        }
 
        /* we generate a local buffer for the firmware */
-       fwBuf = kzalloc(sizeFirmware, GFP_KERNEL);
+       fwBuf = kmemdup(firmwareBinary, sizeFirmware, GFP_KERNEL);
        if (!fwBuf) {
                dev_err(&usbduxsub->interface->dev,
                        "comedi_: mem alloc for firmware failed\n");
                return -ENOMEM;
        }
-       memcpy(fwBuf, firmwareBinary, sizeFirmware);
 
        ret = usbduxsub_stop(usbduxsub);
        if (ret < 0) {
index 0d72c416e73b5630aa1dda9843702bc2c746b939..29c3c016b93a6458f625397f098458a58e37208d 100644 (file)
@@ -1368,13 +1368,12 @@ static int firmwareUpload(struct usbduxfastsub_s *usbduxfastsub,
        }
 
        /* we generate a local buffer for the firmware */
-       fwBuf = kzalloc(sizeFirmware, GFP_KERNEL);
+       fwBuf = kmemdup(firmwareBinary, sizeFirmware, GFP_KERNEL);
        if (!fwBuf) {
                dev_err(&usbduxfastsub->interface->dev,
                        "comedi_: mem alloc for firmware failed\n");
                return -ENOMEM;
        }
-       memcpy(fwBuf, firmwareBinary, sizeFirmware);
 
        ret = usbduxfastsub_stop(usbduxfastsub);
        if (ret < 0) {
index 0a9d8459db0cb56909cc5c9331811449d25eaef4..007543bdb4100b31d8dba170217a5f46939ef491 100644 (file)
@@ -185,11 +185,10 @@ static void VmbusOnMsgDPC(struct hv_driver *drv)
                        /* no msg */
                        break;
                } else {
-                       copied = kmalloc(sizeof(*copied), GFP_ATOMIC);
+                       copied = kmemdup(msg, sizeof(*copied), GFP_ATOMIC);
                        if (copied == NULL)
                                continue;
 
-                       memcpy(copied, msg, sizeof(*copied));
                        osd_schedule_callback(gVmbusConnection.WorkQueue,
                                              VmbusOnChannelMessage,
                                              (void *)copied);
index bb8c9da5803ff24de76f610256238d037a3ae958..cd468c39da5c75fb16823a5269b4a7106c9fcbdc 100644 (file)
@@ -105,10 +105,9 @@ int line6_wait_dump(struct line6_dump_request *l6dr, int nonblock)
 int line6_dumpreq_initbuf(struct line6_dump_request *l6dr, const void *buf,
                          size_t len, int num)
 {
-       l6dr->reqbufs[num].buffer = kmalloc(len, GFP_KERNEL);
+       l6dr->reqbufs[num].buffer = kmemdup(buf, len, GFP_KERNEL);
        if (l6dr->reqbufs[num].buffer == NULL)
                return -ENOMEM;
-       memcpy(l6dr->reqbufs[num].buffer, buf, len);
        l6dr->reqbufs[num].length = len;
        return 0;
 }
index 4983f2b51cf2df1e7cb5f9df5b539de4eecb7158..28f514611abce4a0f55acdd716c6b907d76571bf 100644 (file)
@@ -1074,7 +1074,8 @@ int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod)
                return -ENOMEM;
        }
 
-       pod->buffer_versionreq = kmalloc(sizeof(pod_request_version),
+       pod->buffer_versionreq = kmemdup(pod_request_version,
+                                        sizeof(pod_request_version),
                                         GFP_KERNEL);
 
        if (pod->buffer_versionreq == NULL) {
@@ -1083,9 +1084,6 @@ int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod)
                return -ENOMEM;
        }
 
-       memcpy(pod->buffer_versionreq, pod_request_version,
-              sizeof(pod_request_version));
-
        /* create sysfs entries: */
        err = pod_create_files2(&interface->dev);
        if (err < 0) {
index 28eb89983f36be2ab088ccdf17fa2345a000a080..58ddbe6393ff7e3bf2ba2e17c4166c423fcafd97 100644 (file)
@@ -486,7 +486,8 @@ int variax_init(struct usb_interface *interface,
                return err;
        }
 
-       variax->buffer_activate = kmalloc(sizeof(variax_activate), GFP_KERNEL);
+       variax->buffer_activate = kmemdup(variax_activate,
+                                         sizeof(variax_activate), GFP_KERNEL);
 
        if (variax->buffer_activate == NULL) {
                dev_err(&interface->dev, "Out of memory\n");
@@ -494,8 +495,6 @@ int variax_init(struct usb_interface *interface,
                return -ENOMEM;
        }
 
-       memcpy(variax->buffer_activate, variax_activate,
-              sizeof(variax_activate));
        init_timer(&variax->activate_timer);
 
        /* create sysfs entries: */
index 9fdf2de347ea16497328c826b3d3d3b2b43a066f..8c8d1c282e7e694e50d2afd252621bc36725160f 100644 (file)
@@ -204,18 +204,18 @@ int pohmelfs_copy_crypto(struct pohmelfs_sb *psb)
        }
 
        if (g->hash_keysize) {
-               psb->hash_key = kmalloc(g->hash_keysize, GFP_KERNEL);
+               psb->hash_key = kmemdup(g->hash_key, g->hash_keysize,
+                                       GFP_KERNEL);
                if (!psb->hash_key)
                        goto err_out_free_cipher_string;
-               memcpy(psb->hash_key, g->hash_key, g->hash_keysize);
                psb->hash_keysize = g->hash_keysize;
        }
 
        if (g->cipher_keysize) {
-               psb->cipher_key = kmalloc(g->cipher_keysize, GFP_KERNEL);
+               psb->cipher_key = kmemdup(g->cipher_key, g->cipher_keysize,
+                                         GFP_KERNEL);
                if (!psb->cipher_key)
                        goto err_out_free_hash;
-               memcpy(psb->cipher_key, g->cipher_key, g->cipher_keysize);
                psb->cipher_keysize = g->cipher_keysize;
        }
 
@@ -454,14 +454,12 @@ static int pohmelfs_crypto_hash_init(struct pohmelfs_config_group *g, struct poh
        g->hash_strlen = c->strlen;
        g->hash_keysize = c->keysize;
 
-       g->hash_key = kmalloc(c->keysize, GFP_KERNEL);
+       g->hash_key = kmemdup(key, c->keysize, GFP_KERNEL);
        if (!g->hash_key) {
                kfree(g->hash_string);
                return -ENOMEM;
        }
 
-       memcpy(g->hash_key, key, c->keysize);
-
        return 0;
 }
 
@@ -479,14 +477,12 @@ static int pohmelfs_crypto_cipher_init(struct pohmelfs_config_group *g, struct p
        g->cipher_strlen = c->strlen;
        g->cipher_keysize = c->keysize;
 
-       g->cipher_key = kmalloc(c->keysize, GFP_KERNEL);
+       g->cipher_key = kmemdup(key, c->keysize, GFP_KERNEL);
        if (!g->cipher_key) {
                kfree(g->cipher_string);
                return -ENOMEM;
        }
 
-       memcpy(g->cipher_key, key, c->keysize);
-
        return 0;
 }
 
index b7426fea549861f6119b92a39c214ca57c73c16d..1b838a266e0d13754b85850ae5bfb4764d3a631a 100644 (file)
@@ -2667,11 +2667,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee,
                return -EINVAL;
 
        if (param->u.wpa_ie.len) {
-               buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL);
+               buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len,
+                             GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
 
-               memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = param->u.wpa_ie.len;
index aa3ba450eceffc9a0e8ef5d51c9e312106fda967..07d8dbcdca288345ad9075b4f2191e753c091261 100644 (file)
@@ -727,10 +727,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
                        printk("len:%zu, ie:%d\n", len, ie[1]);
                        return -EINVAL;
                }
-               buf = kmalloc(len, GFP_KERNEL);
+               buf = kmemdup(ie, len, GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
-               memcpy(buf, ie, len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = len;
index 215542a00ef1afe16418d4230b2745ae570daa7e..46b6e8c900e943cb8ba4417657ae338b7f35a203 100644 (file)
@@ -3255,11 +3255,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee,
                return -EINVAL;
 
        if (param->u.wpa_ie.len) {
-               buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL);
+               buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len,
+                             GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
 
-               memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = param->u.wpa_ie.len;
index fcabaf3c88d4329584b22c82ac0f324241899bbf..4971b1c8e7d762b2cf33d917f02e8338ce109565 100644 (file)
@@ -979,10 +979,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
                        printk("len:%zu, ie:%d\n", len, ie[1]);
                        return -EINVAL;
                }
-               buf = kmalloc(len, GFP_KERNEL);
+               buf = kmemdup(ie, len, GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
-               memcpy(buf, ie, len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = len;
index b9fa15fccb78a18dc6ea0af5ec9b10c714f7ef9d..4f1f2f08b2d7d77c347d7b4579054d47bbcf4e46 100644 (file)
@@ -2844,11 +2844,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee,
                return -EINVAL;
 
        if (param->u.wpa_ie.len) {
-               buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL);
+               buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len,
+                             GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
 
-               memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = param->u.wpa_ie.len;
index db54ad096da0dda7a7c7ceb7392b488e241ba0ee..2ce5bd543eaec3bf79d3be586a4b2f37d4be9ab6 100644 (file)
@@ -767,10 +767,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
                        printk("len: %Zd, ie:%d\n", len, ie[1]);
                        return -EINVAL;
                }
-               buf = kmalloc(len, GFP_KERNEL);
+               buf = kmemdup(ie, len, GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
-               memcpy(buf, ie, len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = len;
index a6955e2b45c4afac5b289e5dd98bd088a5033720..a2e84c578579db4ca6cf9fbfad0a370c4a134275 100644 (file)
@@ -1579,10 +1579,9 @@ static inline u16 auth_parse(struct sk_buff *skb, u8** challenge, int *chlen)
 
                if(*(t++) == MFIE_TYPE_CHALLENGE){
                        *chlen = *(t++);
-                       *challenge = kmalloc(*chlen, GFP_ATOMIC);
+                       *challenge = kmemdup(t, *chlen, GFP_ATOMIC);
                        if (!*challenge)
                                return -ENOMEM;
-                       memcpy(*challenge, t, *chlen);
                }
        }
 
@@ -2870,11 +2869,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee,
                return -EINVAL;
 
        if (param->u.wpa_ie.len) {
-               buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL);
+               buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len,
+                             GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
 
-               memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = param->u.wpa_ie.len;
index 79b180f79e802decb3fba2f2bcf61b495ab50fa0..fb78ed2876e51492b9ffaa556cb2f9132cc94a6a 100644 (file)
@@ -847,10 +847,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
                        printk("len:%zu, ie:%d\n", len, ie[1]);
                        return -EINVAL;
                }
-               buf = kmalloc(len, GFP_KERNEL);
+               buf = kmemdup(ie, len, GFP_KERNEL);
                if (buf == NULL)
                        return -ENOMEM;
-               memcpy(buf, ie, len);
                kfree(ieee->wpa_ie);
                ieee->wpa_ie = buf;
                ieee->wpa_ie_len = len;
index bc2674086673b058d769744baae59b93bdd24b4a..feb9fd7a7bb923e6075ee816e74f37f2125f39ff 100644 (file)
@@ -502,13 +502,13 @@ static void stub_recv_cmd_submit(struct stub_device *sdev,
        }
 
        /* set priv->urb->setup_packet */
-       priv->urb->setup_packet = kzalloc(8, GFP_KERNEL);
+       priv->urb->setup_packet = kmemdup(&pdu->u.cmd_submit.setup, 8,
+                                         GFP_KERNEL);
        if (!priv->urb->setup_packet) {
                dev_err(&sdev->interface->dev, "allocate setup_packet\n");
                usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC);
                return;
        }
-       memcpy(priv->urb->setup_packet, &pdu->u.cmd_submit.setup, 8);
 
        /* set other members from the base header of pdu */
        priv->urb->context                = (void *) priv;