Merge tag 'defconfig-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / drivers / bluetooth / btmrvl_sdio.c
index cddd350..68378b4 100644 (file)
@@ -1350,6 +1350,7 @@ static void btmrvl_sdio_coredump(struct device *dev)
        u8 *dbg_ptr, *end_ptr, *fw_dump_data, *fw_dump_ptr;
        u8 dump_num = 0, idx, i, read_reg, doneflag = 0;
        u32 memory_size, fw_dump_len = 0;
+       int size = 0;
 
        card = sdio_get_drvdata(func);
        priv = card->priv;
@@ -1478,7 +1479,7 @@ done:
        if (fw_dump_len == 0)
                return;
 
-       fw_dump_data = vzalloc(fw_dump_len+1);
+       fw_dump_data = vzalloc(fw_dump_len + 1);
        if (!fw_dump_data) {
                BT_ERR("Vzalloc fw_dump_data fail!");
                return;
@@ -1493,20 +1494,18 @@ done:
                struct memory_type_mapping *entry = &mem_type_mapping_tbl[idx];
 
                if (entry->mem_ptr) {
-                       strcpy(fw_dump_ptr, "========Start dump ");
-                       fw_dump_ptr += strlen("========Start dump ");
-
-                       strcpy(fw_dump_ptr, entry->mem_name);
-                       fw_dump_ptr += strlen(entry->mem_name);
-
-                       strcpy(fw_dump_ptr, "========\n");
-                       fw_dump_ptr += strlen("========\n");
-
-                       memcpy(fw_dump_ptr, entry->mem_ptr, entry->mem_size);
-                       fw_dump_ptr += entry->mem_size;
-
-                       strcpy(fw_dump_ptr, "\n========End dump========\n");
-                       fw_dump_ptr += strlen("\n========End dump========\n");
+                       size += scnprintf(fw_dump_ptr + size,
+                                         fw_dump_len + 1 - size,
+                                         "========Start dump %s========\n",
+                                         entry->mem_name);
+
+                       memcpy(fw_dump_ptr + size, entry->mem_ptr,
+                              entry->mem_size);
+                       size += entry->mem_size;
+
+                       size += scnprintf(fw_dump_ptr + size,
+                                         fw_dump_len + 1 - size,
+                                         "\n========End dump========\n");
 
                        vfree(mem_type_mapping_tbl[idx].mem_ptr);
                        mem_type_mapping_tbl[idx].mem_ptr = NULL;