diff
- data = vmalloc(fw->size);
- if (!data) {
-     bt_dev_err(hdev, "QCA Failed to allocate memory for file: %s",
-                config->fwname);
-     release_firmware(fw);
-     return -ENOMEM;
- }
- memcpy(data, fw->data, size);
+ data = kmemdup(fw->data, size, GFP_KERNEL);
+ if (!data) {
+     bt_dev_err(hdev, "QCA Failed to allocate and copy firmware data: %s",
+                config->fwname);
+     release_firmware(fw);
+     return -ENOMEM;
+ }
