diff --git a/src/dsp/firmware_update.c b/src/dsp/firmware_update.c
index a52fdf6..cf27fe7 100644
--- a/src/dsp/firmware_update.c
+++ b/src/dsp/firmware_update.c
@@ -544,7 +544,7 @@
 	pldm_msgbuf_span_remaining(buf, (void **)&iter->field->ptr,
 				   &iter->field->length);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 static int decode_descriptor_type_length_value_errno(
@@ -867,7 +867,7 @@
 		}
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1041,7 +1041,7 @@
 	/* Further calls to encode_get_firmware_parameters_resp_comp_entry
 	 * will populate the remainder */
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_TESTING
@@ -1102,7 +1102,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1242,7 +1242,7 @@
 	pldm_msgbuf_extract(buf, resp_data->max_number_of_downstream_devices);
 	pldm_msgbuf_extract(buf, resp_data->capabilities.value);
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1286,7 +1286,7 @@
 	// Data correctness has been verified, cast it to 1-byte data directly.
 	pldm_msgbuf_insert(buf, params_req->transfer_operation_flag);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1338,7 +1338,7 @@
 		return rc;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return rc;
 	}
@@ -1375,7 +1375,7 @@
 	pldm_msgbuf_span_remaining(buf, (void **)&iter->field.ptr,
 				   &iter->field.length);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1419,7 +1419,7 @@
 	// Data correctness has been verified, cast it to 1-byte data directly.
 	pldm_msgbuf_insert(buf, params_req->transfer_operation_flag);
 
-	return pldm_msgbuf_destroy(buf);
+	return pldm_msgbuf_complete(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1468,7 +1468,7 @@
 		return rc;
 	}
 
-	rc = pldm_msgbuf_destroy(buf);
+	rc = pldm_msgbuf_complete(buf);
 	if (rc) {
 		return rc;
 	}
@@ -1668,7 +1668,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1736,7 +1736,7 @@
 
 	/* TODO: DSP0267 1.3.0 adds GetPackageDataMaximumTransferSize */
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1842,7 +1842,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_consumed(buf);
+	return pldm_msgbuf_complete_consumed(buf);
 }
 
 LIBPLDM_ABI_STABLE
@@ -1912,7 +1912,7 @@
 	pldm_msgbuf_insert(buf, resp_data->comp_resp);
 	pldm_msgbuf_insert(buf, resp_data->comp_resp_code);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2103,7 +2103,7 @@
 	pldm_msgbuf_insert(buf, resp_data->update_option_flags_enabled.value);
 	pldm_msgbuf_insert(buf, resp_data->time_before_req_fw_data);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2157,7 +2157,7 @@
 	pldm_msgbuf_insert(buf, req_params->offset);
 	pldm_msgbuf_insert(buf, req_params->length);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2230,7 +2230,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2304,7 +2304,7 @@
 		return rc;
 	}
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2391,7 +2391,7 @@
 	pldm_msgbuf_insert(
 		buf, req_data->comp_activation_methods_modification.value);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2543,7 +2543,7 @@
 	pldm_msgbuf_insert_uint8(buf, PLDM_SUCCESS);
 	pldm_msgbuf_insert(buf, resp_data->estimated_time_activation);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2675,7 +2675,7 @@
 	pldm_msgbuf_insert(buf, status->reason_code);
 	pldm_msgbuf_insert(buf, status->update_option_flags_enabled.value);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
 
 LIBPLDM_ABI_STABLE
@@ -2814,5 +2814,5 @@
 			   resp_data->non_functioning_component_indication);
 	pldm_msgbuf_insert(buf, resp_data->non_functioning_component_bitmap);
 
-	return pldm_msgbuf_destroy_used(buf, *payload_length, payload_length);
+	return pldm_msgbuf_complete_used(buf, *payload_length, payload_length);
 }
