|
@@ -108,14 +108,13 @@ static int go7007_load_encoder(struct go7007 *go)
|
|
|
return -1;
|
|
|
}
|
|
|
fw_len = fw_entry->size - 16;
|
|
|
- bounce = kmalloc(fw_len, GFP_KERNEL);
|
|
|
+ bounce = kmemdup(fw_entry->data + 16, fw_len, GFP_KERNEL);
|
|
|
if (bounce == NULL) {
|
|
|
v4l2_err(go, "unable to allocate %d bytes for "
|
|
|
"firmware transfer\n", fw_len);
|
|
|
release_firmware(fw_entry);
|
|
|
return -1;
|
|
|
}
|
|
|
- memcpy(bounce, fw_entry->data + 16, fw_len);
|
|
|
release_firmware(fw_entry);
|
|
|
if (go7007_interface_reset(go) < 0 ||
|
|
|
go7007_send_firmware(go, bounce, fw_len) < 0 ||
|