1be168c0dSopenharmony_ciFrom 1b10553fa964dc02c9d126dcd8b1422fd0f188af Mon Sep 17 00:00:00 2001 2be168c0dSopenharmony_ciFrom: chengfeng27 <chengfeng27@huawei.com> 3be168c0dSopenharmony_ciDate: Tue, 10 Sep 2024 22:03:13 +0800 4be168c0dSopenharmony_ciSubject: [PATCH] fix mutable memory leak 5be168c0dSopenharmony_ci 6be168c0dSopenharmony_ci--- 7be168c0dSopenharmony_ci mindspore/lite/src/litert/c_api/tensor_c.cc | 1 + 8be168c0dSopenharmony_ci mindspore/lite/src/litert/cxx_api/tensor/tensor_impl.h | 4 +++- 9be168c0dSopenharmony_ci mindspore/lite/src/litert/kernel/cpu/int8/pad_int8.h | 3 +++ 10be168c0dSopenharmony_ci mindspore/lite/src/tensor.cc | 2 +- 11be168c0dSopenharmony_ci 4 files changed, 8 insertions(+), 2 deletions(-) 12be168c0dSopenharmony_ci 13be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/c_api/tensor_c.cc b/mindspore/lite/src/litert/c_api/tensor_c.cc 14be168c0dSopenharmony_ciindex 7d6c7930..4e7a1e56 100644 15be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/c_api/tensor_c.cc 16be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/c_api/tensor_c.cc 17be168c0dSopenharmony_ci@@ -47,6 +47,7 @@ OH_AI_TensorHandle OH_AI_TensorCreate(const char *name, OH_AI_DataType type, con 18be168c0dSopenharmony_ci return nullptr; 19be168c0dSopenharmony_ci } 20be168c0dSopenharmony_ci lite_tensor_impl->set_from_session(false); 21be168c0dSopenharmony_ci+ lite_tensor_impl->set_own_data(lite_tensor_impl->lite_tensor()->own_data()); 22be168c0dSopenharmony_ci auto impl = new (std::nothrow) mindspore::MSTensor(lite_tensor_impl); 23be168c0dSopenharmony_ci if (impl == nullptr) { 24be168c0dSopenharmony_ci MS_LOG(ERROR) << "Failed to allocate MSTensor."; 25be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/cxx_api/tensor/tensor_impl.h b/mindspore/lite/src/litert/cxx_api/tensor/tensor_impl.h 26be168c0dSopenharmony_ciindex be3743c4..6d9404d2 100644 27be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/cxx_api/tensor/tensor_impl.h 28be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/cxx_api/tensor/tensor_impl.h 29be168c0dSopenharmony_ci@@ -184,7 +184,9 @@ class LiteTensorImpl : public MutableTensorImpl { 30be168c0dSopenharmony_ci MS_LOG(ERROR) << "Invalid tensor."; 31be168c0dSopenharmony_ci return nullptr; 32be168c0dSopenharmony_ci } 33be168c0dSopenharmony_ci- return lite_tensor_->MutableData(); 34be168c0dSopenharmony_ci+ auto ret = lite_tensor_->MutableData(); 35be168c0dSopenharmony_ci+ own_data_ = lite_tensor_->own_data(); 36be168c0dSopenharmony_ci+ return ret; 37be168c0dSopenharmony_ci } 38be168c0dSopenharmony_ci bool IsConst() const override { 39be168c0dSopenharmony_ci if (lite_tensor_ == nullptr) { 40be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/int8/pad_int8.h b/mindspore/lite/src/litert/kernel/cpu/int8/pad_int8.h 41be168c0dSopenharmony_ciindex 067d527a..81fd2057 100644 42be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/kernel/cpu/int8/pad_int8.h 43be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/int8/pad_int8.h 44be168c0dSopenharmony_ci@@ -33,6 +33,9 @@ class PadInt8CPUKernel : public LiteKernel { 45be168c0dSopenharmony_ci : LiteKernel(parameter, inputs, outputs, ctx) { 46be168c0dSopenharmony_ci op_parameter_->thread_num_ = ctx->thread_num_; 47be168c0dSopenharmony_ci pad_param_ = reinterpret_cast<PadParameter *>(op_parameter_); 48be168c0dSopenharmony_ci+ pad_quant_arg_.in_quant_args_ = nullptr; 49be168c0dSopenharmony_ci+ pad_quant_arg_.out_quanr_args_ = nullptr; 50be168c0dSopenharmony_ci+ pad_quant_arg_.constant_value_ = nullptr; 51be168c0dSopenharmony_ci } 52be168c0dSopenharmony_ci ~PadInt8CPUKernel() override { FreeQuantParam(); }; 53be168c0dSopenharmony_ci 54be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/tensor.cc b/mindspore/lite/src/tensor.cc 55be168c0dSopenharmony_ciindex 6e97750a..7e54a80c 100644 56be168c0dSopenharmony_ci--- a/mindspore/lite/src/tensor.cc 57be168c0dSopenharmony_ci+++ b/mindspore/lite/src/tensor.cc 58be168c0dSopenharmony_ci@@ -567,7 +567,7 @@ Tensor *Tensor::CreateTensor(const std::string &name, TypeId type, const std::ve 59be168c0dSopenharmony_ci MS_LOG(ERROR) << "shape, data type and data len not match."; 60be168c0dSopenharmony_ci return nullptr; 61be168c0dSopenharmony_ci } 62be168c0dSopenharmony_ci- tensor->set_data(const_cast<void *>(data)); 63be168c0dSopenharmony_ci+ tensor->set_data(const_cast<void *>(data), false); 64be168c0dSopenharmony_ci tensor->set_shape(shape); 65be168c0dSopenharmony_ci tensor->set_tensor_name(name); 66be168c0dSopenharmony_ci tensor->set_data_type(type); 67be168c0dSopenharmony_ci-- 68be168c0dSopenharmony_ci2.17.1 69be168c0dSopenharmony_ci 70