diff options
author | Julia Lawall <julia@diku.dk> | 2010-05-15 17:21:43 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-17 19:31:15 -0400 |
commit | 94002c07ff0e207a883519ccc35c0b5390b29331 (patch) | |
tree | b730a75ef2ad76d1e3a322e5982b30ca46b6c487 /drivers/staging | |
parent | 96fe9ee2c2dfe3268961f3873ea6098b9b9f27c2 (diff) |
Staging: Use kmemdup
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>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/comedi/drivers/usbdux.c | 3 | ||||
-rw-r--r-- | drivers/staging/comedi/drivers/usbduxfast.c | 3 | ||||
-rw-r--r-- | drivers/staging/hv/vmbus.c | 3 | ||||
-rw-r--r-- | drivers/staging/line6/dumprequest.c | 3 | ||||
-rw-r--r-- | drivers/staging/line6/pod.c | 6 | ||||
-rw-r--r-- | drivers/staging/line6/variax.c | 5 | ||||
-rw-r--r-- | drivers/staging/pohmelfs/config.c | 16 | ||||
-rw-r--r-- | drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c | 4 | ||||
-rw-r--r-- | drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c | 4 | ||||
-rw-r--r-- | drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c | 4 | ||||
-rw-r--r-- | drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 7 | ||||
-rw-r--r-- | drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c | 3 | ||||
-rw-r--r-- | drivers/staging/usbip/stub_rx.c | 4 |
16 files changed, 29 insertions, 45 deletions
diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c index df71515c7a3..86f035d0067 100644 --- a/drivers/staging/comedi/drivers/usbdux.c +++ b/drivers/staging/comedi/drivers/usbdux.c | |||
@@ -840,13 +840,12 @@ static int firmwareUpload(struct usbduxsub *usbduxsub, | |||
840 | } | 840 | } |
841 | 841 | ||
842 | /* we generate a local buffer for the firmware */ | 842 | /* we generate a local buffer for the firmware */ |
843 | fwBuf = kzalloc(sizeFirmware, GFP_KERNEL); | 843 | fwBuf = kmemdup(firmwareBinary, sizeFirmware, GFP_KERNEL); |
844 | if (!fwBuf) { | 844 | if (!fwBuf) { |
845 | dev_err(&usbduxsub->interface->dev, | 845 | dev_err(&usbduxsub->interface->dev, |
846 | "comedi_: mem alloc for firmware failed\n"); | 846 | "comedi_: mem alloc for firmware failed\n"); |
847 | return -ENOMEM; | 847 | return -ENOMEM; |
848 | } | 848 | } |
849 | memcpy(fwBuf, firmwareBinary, sizeFirmware); | ||
850 | 849 | ||
851 | ret = usbduxsub_stop(usbduxsub); | 850 | ret = usbduxsub_stop(usbduxsub); |
852 | if (ret < 0) { | 851 | if (ret < 0) { |
diff --git a/drivers/staging/comedi/drivers/usbduxfast.c b/drivers/staging/comedi/drivers/usbduxfast.c index 0d72c416e73..29c3c016b93 100644 --- a/drivers/staging/comedi/drivers/usbduxfast.c +++ b/drivers/staging/comedi/drivers/usbduxfast.c | |||
@@ -1368,13 +1368,12 @@ static int firmwareUpload(struct usbduxfastsub_s *usbduxfastsub, | |||
1368 | } | 1368 | } |
1369 | 1369 | ||
1370 | /* we generate a local buffer for the firmware */ | 1370 | /* we generate a local buffer for the firmware */ |
1371 | fwBuf = kzalloc(sizeFirmware, GFP_KERNEL); | 1371 | fwBuf = kmemdup(firmwareBinary, sizeFirmware, GFP_KERNEL); |
1372 | if (!fwBuf) { | 1372 | if (!fwBuf) { |
1373 | dev_err(&usbduxfastsub->interface->dev, | 1373 | dev_err(&usbduxfastsub->interface->dev, |
1374 | "comedi_: mem alloc for firmware failed\n"); | 1374 | "comedi_: mem alloc for firmware failed\n"); |
1375 | return -ENOMEM; | 1375 | return -ENOMEM; |
1376 | } | 1376 | } |
1377 | memcpy(fwBuf, firmwareBinary, sizeFirmware); | ||
1378 | 1377 | ||
1379 | ret = usbduxfastsub_stop(usbduxfastsub); | 1378 | ret = usbduxfastsub_stop(usbduxfastsub); |
1380 | if (ret < 0) { | 1379 | if (ret < 0) { |
diff --git a/drivers/staging/hv/vmbus.c b/drivers/staging/hv/vmbus.c index 0a9d8459db0..007543bdb41 100644 --- a/drivers/staging/hv/vmbus.c +++ b/drivers/staging/hv/vmbus.c | |||
@@ -185,11 +185,10 @@ static void VmbusOnMsgDPC(struct hv_driver *drv) | |||
185 | /* no msg */ | 185 | /* no msg */ |
186 | break; | 186 | break; |
187 | } else { | 187 | } else { |
188 | copied = kmalloc(sizeof(*copied), GFP_ATOMIC); | 188 | copied = kmemdup(msg, sizeof(*copied), GFP_ATOMIC); |
189 | if (copied == NULL) | 189 | if (copied == NULL) |
190 | continue; | 190 | continue; |
191 | 191 | ||
192 | memcpy(copied, msg, sizeof(*copied)); | ||
193 | osd_schedule_callback(gVmbusConnection.WorkQueue, | 192 | osd_schedule_callback(gVmbusConnection.WorkQueue, |
194 | VmbusOnChannelMessage, | 193 | VmbusOnChannelMessage, |
195 | (void *)copied); | 194 | (void *)copied); |
diff --git a/drivers/staging/line6/dumprequest.c b/drivers/staging/line6/dumprequest.c index bb8c9da5803..cd468c39da5 100644 --- a/drivers/staging/line6/dumprequest.c +++ b/drivers/staging/line6/dumprequest.c | |||
@@ -105,10 +105,9 @@ int line6_wait_dump(struct line6_dump_request *l6dr, int nonblock) | |||
105 | int line6_dumpreq_initbuf(struct line6_dump_request *l6dr, const void *buf, | 105 | int line6_dumpreq_initbuf(struct line6_dump_request *l6dr, const void *buf, |
106 | size_t len, int num) | 106 | size_t len, int num) |
107 | { | 107 | { |
108 | l6dr->reqbufs[num].buffer = kmalloc(len, GFP_KERNEL); | 108 | l6dr->reqbufs[num].buffer = kmemdup(buf, len, GFP_KERNEL); |
109 | if (l6dr->reqbufs[num].buffer == NULL) | 109 | if (l6dr->reqbufs[num].buffer == NULL) |
110 | return -ENOMEM; | 110 | return -ENOMEM; |
111 | memcpy(l6dr->reqbufs[num].buffer, buf, len); | ||
112 | l6dr->reqbufs[num].length = len; | 111 | l6dr->reqbufs[num].length = len; |
113 | return 0; | 112 | return 0; |
114 | } | 113 | } |
diff --git a/drivers/staging/line6/pod.c b/drivers/staging/line6/pod.c index 4983f2b51cf..28f514611ab 100644 --- a/drivers/staging/line6/pod.c +++ b/drivers/staging/line6/pod.c | |||
@@ -1074,7 +1074,8 @@ int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod) | |||
1074 | return -ENOMEM; | 1074 | return -ENOMEM; |
1075 | } | 1075 | } |
1076 | 1076 | ||
1077 | pod->buffer_versionreq = kmalloc(sizeof(pod_request_version), | 1077 | pod->buffer_versionreq = kmemdup(pod_request_version, |
1078 | sizeof(pod_request_version), | ||
1078 | GFP_KERNEL); | 1079 | GFP_KERNEL); |
1079 | 1080 | ||
1080 | if (pod->buffer_versionreq == NULL) { | 1081 | if (pod->buffer_versionreq == NULL) { |
@@ -1083,9 +1084,6 @@ int pod_init(struct usb_interface *interface, struct usb_line6_pod *pod) | |||
1083 | return -ENOMEM; | 1084 | return -ENOMEM; |
1084 | } | 1085 | } |
1085 | 1086 | ||
1086 | memcpy(pod->buffer_versionreq, pod_request_version, | ||
1087 | sizeof(pod_request_version)); | ||
1088 | |||
1089 | /* create sysfs entries: */ | 1087 | /* create sysfs entries: */ |
1090 | err = pod_create_files2(&interface->dev); | 1088 | err = pod_create_files2(&interface->dev); |
1091 | if (err < 0) { | 1089 | if (err < 0) { |
diff --git a/drivers/staging/line6/variax.c b/drivers/staging/line6/variax.c index 28eb89983f3..58ddbe6393f 100644 --- a/drivers/staging/line6/variax.c +++ b/drivers/staging/line6/variax.c | |||
@@ -486,7 +486,8 @@ int variax_init(struct usb_interface *interface, | |||
486 | return err; | 486 | return err; |
487 | } | 487 | } |
488 | 488 | ||
489 | variax->buffer_activate = kmalloc(sizeof(variax_activate), GFP_KERNEL); | 489 | variax->buffer_activate = kmemdup(variax_activate, |
490 | sizeof(variax_activate), GFP_KERNEL); | ||
490 | 491 | ||
491 | if (variax->buffer_activate == NULL) { | 492 | if (variax->buffer_activate == NULL) { |
492 | dev_err(&interface->dev, "Out of memory\n"); | 493 | dev_err(&interface->dev, "Out of memory\n"); |
@@ -494,8 +495,6 @@ int variax_init(struct usb_interface *interface, | |||
494 | return -ENOMEM; | 495 | return -ENOMEM; |
495 | } | 496 | } |
496 | 497 | ||
497 | memcpy(variax->buffer_activate, variax_activate, | ||
498 | sizeof(variax_activate)); | ||
499 | init_timer(&variax->activate_timer); | 498 | init_timer(&variax->activate_timer); |
500 | 499 | ||
501 | /* create sysfs entries: */ | 500 | /* create sysfs entries: */ |
diff --git a/drivers/staging/pohmelfs/config.c b/drivers/staging/pohmelfs/config.c index 9fdf2de347e..8c8d1c282e7 100644 --- a/drivers/staging/pohmelfs/config.c +++ b/drivers/staging/pohmelfs/config.c | |||
@@ -204,18 +204,18 @@ int pohmelfs_copy_crypto(struct pohmelfs_sb *psb) | |||
204 | } | 204 | } |
205 | 205 | ||
206 | if (g->hash_keysize) { | 206 | if (g->hash_keysize) { |
207 | psb->hash_key = kmalloc(g->hash_keysize, GFP_KERNEL); | 207 | psb->hash_key = kmemdup(g->hash_key, g->hash_keysize, |
208 | GFP_KERNEL); | ||
208 | if (!psb->hash_key) | 209 | if (!psb->hash_key) |
209 | goto err_out_free_cipher_string; | 210 | goto err_out_free_cipher_string; |
210 | memcpy(psb->hash_key, g->hash_key, g->hash_keysize); | ||
211 | psb->hash_keysize = g->hash_keysize; | 211 | psb->hash_keysize = g->hash_keysize; |
212 | } | 212 | } |
213 | 213 | ||
214 | if (g->cipher_keysize) { | 214 | if (g->cipher_keysize) { |
215 | psb->cipher_key = kmalloc(g->cipher_keysize, GFP_KERNEL); | 215 | psb->cipher_key = kmemdup(g->cipher_key, g->cipher_keysize, |
216 | GFP_KERNEL); | ||
216 | if (!psb->cipher_key) | 217 | if (!psb->cipher_key) |
217 | goto err_out_free_hash; | 218 | goto err_out_free_hash; |
218 | memcpy(psb->cipher_key, g->cipher_key, g->cipher_keysize); | ||
219 | psb->cipher_keysize = g->cipher_keysize; | 219 | psb->cipher_keysize = g->cipher_keysize; |
220 | } | 220 | } |
221 | 221 | ||
@@ -454,14 +454,12 @@ static int pohmelfs_crypto_hash_init(struct pohmelfs_config_group *g, struct poh | |||
454 | g->hash_strlen = c->strlen; | 454 | g->hash_strlen = c->strlen; |
455 | g->hash_keysize = c->keysize; | 455 | g->hash_keysize = c->keysize; |
456 | 456 | ||
457 | g->hash_key = kmalloc(c->keysize, GFP_KERNEL); | 457 | g->hash_key = kmemdup(key, c->keysize, GFP_KERNEL); |
458 | if (!g->hash_key) { | 458 | if (!g->hash_key) { |
459 | kfree(g->hash_string); | 459 | kfree(g->hash_string); |
460 | return -ENOMEM; | 460 | return -ENOMEM; |
461 | } | 461 | } |
462 | 462 | ||
463 | memcpy(g->hash_key, key, c->keysize); | ||
464 | |||
465 | return 0; | 463 | return 0; |
466 | } | 464 | } |
467 | 465 | ||
@@ -479,14 +477,12 @@ static int pohmelfs_crypto_cipher_init(struct pohmelfs_config_group *g, struct p | |||
479 | g->cipher_strlen = c->strlen; | 477 | g->cipher_strlen = c->strlen; |
480 | g->cipher_keysize = c->keysize; | 478 | g->cipher_keysize = c->keysize; |
481 | 479 | ||
482 | g->cipher_key = kmalloc(c->keysize, GFP_KERNEL); | 480 | g->cipher_key = kmemdup(key, c->keysize, GFP_KERNEL); |
483 | if (!g->cipher_key) { | 481 | if (!g->cipher_key) { |
484 | kfree(g->cipher_string); | 482 | kfree(g->cipher_string); |
485 | return -ENOMEM; | 483 | return -ENOMEM; |
486 | } | 484 | } |
487 | 485 | ||
488 | memcpy(g->cipher_key, key, c->keysize); | ||
489 | |||
490 | return 0; | 486 | return 0; |
491 | } | 487 | } |
492 | 488 | ||
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c index b7426fea549..1b838a266e0 100644 --- a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c | |||
@@ -2667,11 +2667,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee, | |||
2667 | return -EINVAL; | 2667 | return -EINVAL; |
2668 | 2668 | ||
2669 | if (param->u.wpa_ie.len) { | 2669 | if (param->u.wpa_ie.len) { |
2670 | buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL); | 2670 | buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len, |
2671 | GFP_KERNEL); | ||
2671 | if (buf == NULL) | 2672 | if (buf == NULL) |
2672 | return -ENOMEM; | 2673 | return -ENOMEM; |
2673 | 2674 | ||
2674 | memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len); | ||
2675 | kfree(ieee->wpa_ie); | 2675 | kfree(ieee->wpa_ie); |
2676 | ieee->wpa_ie = buf; | 2676 | ieee->wpa_ie = buf; |
2677 | ieee->wpa_ie_len = param->u.wpa_ie.len; | 2677 | ieee->wpa_ie_len = param->u.wpa_ie.len; |
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c index aa3ba450ece..07d8dbcdca2 100644 --- a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c +++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c | |||
@@ -727,10 +727,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len) | |||
727 | printk("len:%zu, ie:%d\n", len, ie[1]); | 727 | printk("len:%zu, ie:%d\n", len, ie[1]); |
728 | return -EINVAL; | 728 | return -EINVAL; |
729 | } | 729 | } |
730 | buf = kmalloc(len, GFP_KERNEL); | 730 | buf = kmemdup(ie, len, GFP_KERNEL); |
731 | if (buf == NULL) | 731 | if (buf == NULL) |
732 | return -ENOMEM; | 732 | return -ENOMEM; |
733 | memcpy(buf, ie, len); | ||
734 | kfree(ieee->wpa_ie); | 733 | kfree(ieee->wpa_ie); |
735 | ieee->wpa_ie = buf; | 734 | ieee->wpa_ie = buf; |
736 | ieee->wpa_ie_len = len; | 735 | ieee->wpa_ie_len = len; |
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c index 215542a00ef..46b6e8c900e 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c | |||
@@ -3255,11 +3255,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee, | |||
3255 | return -EINVAL; | 3255 | return -EINVAL; |
3256 | 3256 | ||
3257 | if (param->u.wpa_ie.len) { | 3257 | if (param->u.wpa_ie.len) { |
3258 | buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL); | 3258 | buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len, |
3259 | GFP_KERNEL); | ||
3259 | if (buf == NULL) | 3260 | if (buf == NULL) |
3260 | return -ENOMEM; | 3261 | return -ENOMEM; |
3261 | 3262 | ||
3262 | memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len); | ||
3263 | kfree(ieee->wpa_ie); | 3263 | kfree(ieee->wpa_ie); |
3264 | ieee->wpa_ie = buf; | 3264 | ieee->wpa_ie = buf; |
3265 | ieee->wpa_ie_len = param->u.wpa_ie.len; | 3265 | ieee->wpa_ie_len = param->u.wpa_ie.len; |
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c index fcabaf3c88d..4971b1c8e7d 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c | |||
@@ -979,10 +979,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len) | |||
979 | printk("len:%zu, ie:%d\n", len, ie[1]); | 979 | printk("len:%zu, ie:%d\n", len, ie[1]); |
980 | return -EINVAL; | 980 | return -EINVAL; |
981 | } | 981 | } |
982 | buf = kmalloc(len, GFP_KERNEL); | 982 | buf = kmemdup(ie, len, GFP_KERNEL); |
983 | if (buf == NULL) | 983 | if (buf == NULL) |
984 | return -ENOMEM; | 984 | return -ENOMEM; |
985 | memcpy(buf, ie, len); | ||
986 | kfree(ieee->wpa_ie); | 985 | kfree(ieee->wpa_ie); |
987 | ieee->wpa_ie = buf; | 986 | ieee->wpa_ie = buf; |
988 | ieee->wpa_ie_len = len; | 987 | ieee->wpa_ie_len = len; |
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c index b9fa15fccb7..4f1f2f08b2d 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c | |||
@@ -2844,11 +2844,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee, | |||
2844 | return -EINVAL; | 2844 | return -EINVAL; |
2845 | 2845 | ||
2846 | if (param->u.wpa_ie.len) { | 2846 | if (param->u.wpa_ie.len) { |
2847 | buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL); | 2847 | buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len, |
2848 | GFP_KERNEL); | ||
2848 | if (buf == NULL) | 2849 | if (buf == NULL) |
2849 | return -ENOMEM; | 2850 | return -ENOMEM; |
2850 | 2851 | ||
2851 | memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len); | ||
2852 | kfree(ieee->wpa_ie); | 2852 | kfree(ieee->wpa_ie); |
2853 | ieee->wpa_ie = buf; | 2853 | ieee->wpa_ie = buf; |
2854 | ieee->wpa_ie_len = param->u.wpa_ie.len; | 2854 | ieee->wpa_ie_len = param->u.wpa_ie.len; |
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c index db54ad096da..2ce5bd543ea 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c | |||
@@ -767,10 +767,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len) | |||
767 | printk("len: %Zd, ie:%d\n", len, ie[1]); | 767 | printk("len: %Zd, ie:%d\n", len, ie[1]); |
768 | return -EINVAL; | 768 | return -EINVAL; |
769 | } | 769 | } |
770 | buf = kmalloc(len, GFP_KERNEL); | 770 | buf = kmemdup(ie, len, GFP_KERNEL); |
771 | if (buf == NULL) | 771 | if (buf == NULL) |
772 | return -ENOMEM; | 772 | return -ENOMEM; |
773 | memcpy(buf, ie, len); | ||
774 | kfree(ieee->wpa_ie); | 773 | kfree(ieee->wpa_ie); |
775 | ieee->wpa_ie = buf; | 774 | ieee->wpa_ie = buf; |
776 | ieee->wpa_ie_len = len; | 775 | ieee->wpa_ie_len = len; |
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c index a6955e2b45c..a2e84c57857 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | |||
@@ -1579,10 +1579,9 @@ static inline u16 auth_parse(struct sk_buff *skb, u8** challenge, int *chlen) | |||
1579 | 1579 | ||
1580 | if(*(t++) == MFIE_TYPE_CHALLENGE){ | 1580 | if(*(t++) == MFIE_TYPE_CHALLENGE){ |
1581 | *chlen = *(t++); | 1581 | *chlen = *(t++); |
1582 | *challenge = kmalloc(*chlen, GFP_ATOMIC); | 1582 | *challenge = kmemdup(t, *chlen, GFP_ATOMIC); |
1583 | if (!*challenge) | 1583 | if (!*challenge) |
1584 | return -ENOMEM; | 1584 | return -ENOMEM; |
1585 | memcpy(*challenge, t, *chlen); | ||
1586 | } | 1585 | } |
1587 | } | 1586 | } |
1588 | 1587 | ||
@@ -2870,11 +2869,11 @@ static int ieee80211_wpa_set_wpa_ie(struct ieee80211_device *ieee, | |||
2870 | return -EINVAL; | 2869 | return -EINVAL; |
2871 | 2870 | ||
2872 | if (param->u.wpa_ie.len) { | 2871 | if (param->u.wpa_ie.len) { |
2873 | buf = kmalloc(param->u.wpa_ie.len, GFP_KERNEL); | 2872 | buf = kmemdup(param->u.wpa_ie.data, param->u.wpa_ie.len, |
2873 | GFP_KERNEL); | ||
2874 | if (buf == NULL) | 2874 | if (buf == NULL) |
2875 | return -ENOMEM; | 2875 | return -ENOMEM; |
2876 | 2876 | ||
2877 | memcpy(buf, param->u.wpa_ie.data, param->u.wpa_ie.len); | ||
2878 | kfree(ieee->wpa_ie); | 2877 | kfree(ieee->wpa_ie); |
2879 | ieee->wpa_ie = buf; | 2878 | ieee->wpa_ie = buf; |
2880 | ieee->wpa_ie_len = param->u.wpa_ie.len; | 2879 | ieee->wpa_ie_len = param->u.wpa_ie.len; |
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c index 79b180f79e8..fb78ed2876e 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c | |||
@@ -847,10 +847,9 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len) | |||
847 | printk("len:%zu, ie:%d\n", len, ie[1]); | 847 | printk("len:%zu, ie:%d\n", len, ie[1]); |
848 | return -EINVAL; | 848 | return -EINVAL; |
849 | } | 849 | } |
850 | buf = kmalloc(len, GFP_KERNEL); | 850 | buf = kmemdup(ie, len, GFP_KERNEL); |
851 | if (buf == NULL) | 851 | if (buf == NULL) |
852 | return -ENOMEM; | 852 | return -ENOMEM; |
853 | memcpy(buf, ie, len); | ||
854 | kfree(ieee->wpa_ie); | 853 | kfree(ieee->wpa_ie); |
855 | ieee->wpa_ie = buf; | 854 | ieee->wpa_ie = buf; |
856 | ieee->wpa_ie_len = len; | 855 | ieee->wpa_ie_len = len; |
diff --git a/drivers/staging/usbip/stub_rx.c b/drivers/staging/usbip/stub_rx.c index bc267408667..feb9fd7a7bb 100644 --- a/drivers/staging/usbip/stub_rx.c +++ b/drivers/staging/usbip/stub_rx.c | |||
@@ -502,13 +502,13 @@ static void stub_recv_cmd_submit(struct stub_device *sdev, | |||
502 | } | 502 | } |
503 | 503 | ||
504 | /* set priv->urb->setup_packet */ | 504 | /* set priv->urb->setup_packet */ |
505 | priv->urb->setup_packet = kzalloc(8, GFP_KERNEL); | 505 | priv->urb->setup_packet = kmemdup(&pdu->u.cmd_submit.setup, 8, |
506 | GFP_KERNEL); | ||
506 | if (!priv->urb->setup_packet) { | 507 | if (!priv->urb->setup_packet) { |
507 | dev_err(&sdev->interface->dev, "allocate setup_packet\n"); | 508 | dev_err(&sdev->interface->dev, "allocate setup_packet\n"); |
508 | usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC); | 509 | usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC); |
509 | return; | 510 | return; |
510 | } | 511 | } |
511 | memcpy(priv->urb->setup_packet, &pdu->u.cmd_submit.setup, 8); | ||
512 | 512 | ||
513 | /* set other members from the base header of pdu */ | 513 | /* set other members from the base header of pdu */ |
514 | priv->urb->context = (void *) priv; | 514 | priv->urb->context = (void *) priv; |