From d822b48e09c5d027755b5cab694b5e065fbc35d5 Mon Sep 17 00:00:00 2001 From: rabbit-fgh <2955722401@qq.com> Date: Thu, 29 Aug 2024 14:52:26 +0800 Subject: [PATCH] fix semicolon and nullptr etal Signed-off-by: rabbit-fgh <2955722401@qq.com> --- build_helper.py | 1 + .../0034-fix-semicolon-and-nullptr-etal.patch | 248 ++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 patches/0034-fix-semicolon-and-nullptr-etal.patch diff --git a/build_helper.py b/build_helper.py index 10c3fa60d9..ed25b8b05d 100755 --- a/build_helper.py +++ b/build_helper.py @@ -67,6 +67,7 @@ def do_patch(patch_dir, target_dir): '0031-fix-matmul-assemble-can-not-protect-stack-in-mutil-thread.patch', '0032-fix-for-concat-bool-type.patch', '0033-fix-nullptr-etal.patch', + '0034-fix-semicolon-and-nullptr-etal.patch', '0036-fix-split-non-uniform-split.patch', '0037-fix-for-fuzz-problem.patch', ] diff --git a/patches/0034-fix-semicolon-and-nullptr-etal.patch b/patches/0034-fix-semicolon-and-nullptr-etal.patch new file mode 100644 index 0000000000..166bc64910 --- /dev/null +++ b/patches/0034-fix-semicolon-and-nullptr-etal.patch @@ -0,0 +1,248 @@ +From aca0f17761a9f2ca9b9e3c076e0cead45aca8464 Mon Sep 17 00:00:00 2001 +From: rabbit-fgh <2955722401@qq.com> +Date: Thu, 29 Aug 2024 10:57:05 +0800 +Subject: [PATCH] fix semicolon and nullptr etal + +--- + mindspore/lite/src/litert/c_api/context_c.cc | 4 ++-- + .../coreml/pass/coreml_trans_extend_pass.cc | 9 ++++++++- + .../src/litert/delegate/npu/npu_subgraph.cc | 4 ++++ + .../npu/pass/npu_insert_transform_pass.cc | 9 ++++++++- + .../litert/kernel/opencl/kernel/arithmetic.cc | 4 ++++ + .../litert/kernel/opencl/kernel/to_format.cc | 4 ++++ + .../src/litert/kernel/opencl/opencl_kernel.cc | 8 ++++++++ + .../cast_gather_reduce_fusion_pass.cc | 2 +- + .../pass/online_fusion/online_fusion_pass.h | 2 +- + .../online_fusion/reduce_concat_fusion_pass.cc | 2 +- + .../split_reduce_concat_fusion_pass.cc | 2 +- + .../src/litert/runtime_packed_node_pass.cc | 1 + + .../src/litert/runtime_shape_fusion_pass.cc | 18 +++++++++++++++--- + 13 files changed, 58 insertions(+), 11 deletions(-) + +diff --git a/mindspore/lite/src/litert/c_api/context_c.cc b/mindspore/lite/src/litert/c_api/context_c.cc +index 2fe3b055..ef7d4b6a 100644 +--- a/mindspore/lite/src/litert/c_api/context_c.cc ++++ b/mindspore/lite/src/litert/c_api/context_c.cc +@@ -517,8 +517,8 @@ OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle devic + MS_LOG(ERROR) << "device info is null"; + return OH_AI_STATUS_LITE_NULLPTR; + } +- if (name == nullptr || value == nullptr || value_size < 0) { +- MS_LOG(ERROR) << "name/value/value_size is not valid"; ++ if (name == nullptr || value == nullptr) { ++ MS_LOG(ERROR) << "name/value is not valid"; + return OH_AI_STATUS_LITE_NULLPTR; + } + if (OH_AI_DeviceInfoGetDeviceType(device_info) != OH_AI_DEVICETYPE_NNRT) { +diff --git a/mindspore/lite/src/litert/delegate/coreml/pass/coreml_trans_extend_pass.cc b/mindspore/lite/src/litert/delegate/coreml/pass/coreml_trans_extend_pass.cc +index 810a29d0..d16fd0ee 100644 +--- a/mindspore/lite/src/litert/delegate/coreml/pass/coreml_trans_extend_pass.cc ++++ b/mindspore/lite/src/litert/delegate/coreml/pass/coreml_trans_extend_pass.cc +@@ -166,8 +166,15 @@ int CoreMLTransExtendPass::InsertTransNode(CoreMLOp *op, CoreMLOp *post_op, cons + + auto *nc2nh_op = CoreMLPassUtils::CreateNchw2NhwcOp(nh2nc_tensors, nc2nh_tensors, nc2nh_name); + trans_ops->push_back(nc2nh_op); +- ++ if(nh2nc == nullptr){ ++ MS_LOG(ERROR) << "nh2nc_op is nullptr."; ++ return RET_ERROR; ++ } + CoreMLPassUtils::UpdateOp(nh2nc_op, in_ops, {nc2nh_op}, {trans_in_tensor}, nh2nc_tensors); ++ if(nc2nh_op == nullptr){ ++ MS_LOG(ERROR) << "nc2nh_op is nullptr."; ++ return RET_ERROR; ++ } + CoreMLPassUtils::UpdateOp(nc2nh_op, {nh2nc_op}, out_ops, {nh2nc_tensors[0]}, nc2nh_tensors); + if (op != nullptr) { + CoreMLPassUtils::UpdateNH2NCTransNodePreOp(op, nh2nc_op, post_op); +diff --git a/mindspore/lite/src/litert/delegate/npu/npu_subgraph.cc b/mindspore/lite/src/litert/delegate/npu/npu_subgraph.cc +index 5f56dcea..9d8e233f 100644 +--- a/mindspore/lite/src/litert/delegate/npu/npu_subgraph.cc ++++ b/mindspore/lite/src/litert/delegate/npu/npu_subgraph.cc +@@ -170,6 +170,10 @@ int NPUSubGraph::BuildNPUInputOp() { + if (IsSubGraphInputTensor(in_tensor)) { + auto tensor_name = "Input_" + std::to_string(count++) + '_' + op->name(); + hiai::op::Data *data = ConverterToNPUData(in_tensor, tensor_name); ++ if(data == nullptr){ ++ MS_LOG(ERROR) << "data is nullptr."; ++ return RET_ERROR; ++ } + subgraph_input_ops_.push_back(*data); + input_ops.push_back(data); + op_buffer_.push_back(data); +diff --git a/mindspore/lite/src/litert/delegate/npu/pass/npu_insert_transform_pass.cc b/mindspore/lite/src/litert/delegate/npu/pass/npu_insert_transform_pass.cc +index b59037a4..8f4341b7 100644 +--- a/mindspore/lite/src/litert/delegate/npu/pass/npu_insert_transform_pass.cc ++++ b/mindspore/lite/src/litert/delegate/npu/pass/npu_insert_transform_pass.cc +@@ -166,8 +166,15 @@ int NPUInsertTransformPass::InsertTransNode(NPUOp *op, NPUOp *post_op, const min + + auto *nc2nh_op = NPUPassUtils::CreateNchw2NhwcOp(nh2nc_tensors, nc2nh_tensors, nc2nh_name); + trans_ops->push_back(nc2nh_op); +- ++ if(nh2nc_op == nullptr){ ++ MS_LOG(ERROR) << "nh2nc_op is nullptr."; ++ return RET_ERROR; ++ } + NPUPassUtils::UpdateOp(nh2nc_op, in_ops, {nc2nh_op}, {trans_in_tensor}, nh2nc_tensors); ++ if(nc2nh_op == nullptr){ ++ MS_LOG(ERROR) << "nc2nh_op is nullptr."; ++ return RET_ERROR; ++ } + NPUPassUtils::UpdateOp(nc2nh_op, {nh2nc_op}, out_ops, {nh2nc_tensors[0]}, nc2nh_tensors); + if (op != nullptr) { + NPUPassUtils::UpdateNH2NCTransNodePreOp(op, nh2nc_op, post_op); +diff --git a/mindspore/lite/src/litert/kernel/opencl/kernel/arithmetic.cc b/mindspore/lite/src/litert/kernel/opencl/kernel/arithmetic.cc +index 36edecb1..b70984ca 100644 +--- a/mindspore/lite/src/litert/kernel/opencl/kernel/arithmetic.cc ++++ b/mindspore/lite/src/litert/kernel/opencl/kernel/arithmetic.cc +@@ -121,6 +121,10 @@ int ArithmeticOpenCLKernel::InitWeights() { + for (size_t i = 0; i < in_tensors_.size(); ++i) { + const auto &in_tensor = in_tensors_.at(i); + auto in_shape = GpuTensorInfo::CreateGpuTensorInfo(in_tensor); ++ if(in_shape == nullptr){ ++ MS_LOG(ERROR) << "in_shape is nullptr."; ++ return RET_ERROR; ++ } + if (in1_shape_switch_flag_ && i == 1) { + SwitchGpuTensorInfoNWDim(in_shape.get()); + } +diff --git a/mindspore/lite/src/litert/kernel/opencl/kernel/to_format.cc b/mindspore/lite/src/litert/kernel/opencl/kernel/to_format.cc +index 54748128..7db2480e 100644 +--- a/mindspore/lite/src/litert/kernel/opencl/kernel/to_format.cc ++++ b/mindspore/lite/src/litert/kernel/opencl/kernel/to_format.cc +@@ -94,6 +94,10 @@ int ToFormatOpenCLKernel::Prepare() { + } + + auto output = GpuTensorInfo::CreateGpuTensorInfo(out_tensor); ++ if(output == nullptr){ ++ MS_LOG(ERROR) << "output is nullptr."; ++ return RET_ERROR; ++ } + N_ = output->N; + D_ = output->D; + H_ = output->H; +diff --git a/mindspore/lite/src/litert/kernel/opencl/opencl_kernel.cc b/mindspore/lite/src/litert/kernel/opencl/opencl_kernel.cc +index 790e0f4e..3acfa855 100644 +--- a/mindspore/lite/src/litert/kernel/opencl/opencl_kernel.cc ++++ b/mindspore/lite/src/litert/kernel/opencl/opencl_kernel.cc +@@ -119,6 +119,10 @@ int OpenCLKernel::GetImageSize(size_t idx, lite::opencl::ImageSize *img_size) { + return RET_ERROR; + } + } ++ if(img_info == nullptr){ ++ MS_LOG(ERROR) << "img_info is nullptr."; ++ return RET_ERROR; ++ } + *img_size = {img_info->width, img_info->height, img_dtype}; + return RET_OK; + } +@@ -147,6 +151,10 @@ void OpenCLKernel::PrintOutput(int print_num, const std::string &out_file) { + } + + auto img_info = GpuTensorInfo::CreateGpuTensorInfo(tensor); ++ if(img_info == nullptr){ ++ MS_LOG(ERROR) << "img_info is nullptr."; ++ return; ++ } + auto size = mem_type == lite::opencl::MemType::BUF ? img_info->OriginSize : img_info->Image2DSize; + std::vector data(size); + auto runtime_wrapper = lite::opencl::OpenCLRuntimeInnerWrapper(); +diff --git a/mindspore/lite/src/litert/pass/online_fusion/cast_gather_reduce_fusion_pass.cc b/mindspore/lite/src/litert/pass/online_fusion/cast_gather_reduce_fusion_pass.cc +index 00186dc7..7d59b63d 100644 +--- a/mindspore/lite/src/litert/pass/online_fusion/cast_gather_reduce_fusion_pass.cc ++++ b/mindspore/lite/src/litert/pass/online_fusion/cast_gather_reduce_fusion_pass.cc +@@ -127,7 +127,7 @@ int CastGatherReduceOnlineFusionPass::CreateCastGatherReduceCustomNode(LiteGraph + (void)memcpy(prim, fbb.GetBufferPointer(), fbb.GetSize()); + auto online_fusion_prim = flatbuffers::GetRoot(prim); + if (online_fusion_prim == nullptr) { +- free(prim) ++ free(prim); + MS_LOG(ERROR) << "GetRoot CastGatherReduceFusion primitive failed."; + return RET_ERROR; + } +diff --git a/mindspore/lite/src/litert/pass/online_fusion/online_fusion_pass.h b/mindspore/lite/src/litert/pass/online_fusion/online_fusion_pass.h +index 9bfa68bd..7ea6fe7f 100644 +--- a/mindspore/lite/src/litert/pass/online_fusion/online_fusion_pass.h ++++ b/mindspore/lite/src/litert/pass/online_fusion/online_fusion_pass.h +@@ -36,7 +36,7 @@ namespace mindspore::lite { + class OnlineFusionPass { + public: + explicit OnlineFusionPass(SearchSubGraph *search_subgrap); +- ~OnlineFusionPass(); ++ virtual ~OnlineFusionPass(); + + public: + void DoOnlineFusionPass(); +diff --git a/mindspore/lite/src/litert/pass/online_fusion/reduce_concat_fusion_pass.cc b/mindspore/lite/src/litert/pass/online_fusion/reduce_concat_fusion_pass.cc +index 21115cc5..fcbd703e 100644 +--- a/mindspore/lite/src/litert/pass/online_fusion/reduce_concat_fusion_pass.cc ++++ b/mindspore/lite/src/litert/pass/online_fusion/reduce_concat_fusion_pass.cc +@@ -135,7 +135,7 @@ int ReduceConcatOnlineFusionPass::CreateReduceConcatCustomNode(LiteGraph::Node * + (void)memcpy(prim, fbb.GetBufferPointer(), fbb.GetSize()); + auto online_fusion_prim = flatbuffers::GetRoot(prim); + if (online_fusion_prim == nullptr) { +- free(prim) ++ free(prim); + MS_LOG(ERROR) << "GetRoot ReduceConcatFusion primitive failed."; + return RET_ERROR; + } +diff --git a/mindspore/lite/src/litert/pass/online_fusion/split_reduce_concat_fusion_pass.cc b/mindspore/lite/src/litert/pass/online_fusion/split_reduce_concat_fusion_pass.cc +index f9a08a04..88bb86f9 100644 +--- a/mindspore/lite/src/litert/pass/online_fusion/split_reduce_concat_fusion_pass.cc ++++ b/mindspore/lite/src/litert/pass/online_fusion/split_reduce_concat_fusion_pass.cc +@@ -233,7 +233,7 @@ int SplitReduceConcatOnlineFusionPass::CreateCustomNode(LiteGraph::Node *node, S + (void)memcpy(prim, fbb.GetBufferPointer(), fbb.GetSize()); + auto online_fusion_prim = flatbuffers::GetRoot(prim); + if (online_fusion_prim == nullptr) { +- free(prim) ++ free(prim); + MS_LOG(ERROR) << "GetRoot SplitReduceConcatFusion primitive failed."; + return RET_ERROR; + } +diff --git a/mindspore/lite/src/litert/runtime_packed_node_pass.cc b/mindspore/lite/src/litert/runtime_packed_node_pass.cc +index 65454247..15e8d491 100644 +--- a/mindspore/lite/src/litert/runtime_packed_node_pass.cc ++++ b/mindspore/lite/src/litert/runtime_packed_node_pass.cc +@@ -112,6 +112,7 @@ void PackedNodePass::Run(Model *model, const std::vector &tensors) { + if (!(reinterpret_cast(model)->keep_model_buf())) { + auto index = static_cast(pack_info->weight_sums_index_); + if (index > tensors.size()) { ++ free(prim); + MS_LOG(ERROR) << "weight sums tensor index is error."; + return; + } +diff --git a/mindspore/lite/src/litert/runtime_shape_fusion_pass.cc b/mindspore/lite/src/litert/runtime_shape_fusion_pass.cc +index f6fc0f82..1f343af8 100644 +--- a/mindspore/lite/src/litert/runtime_shape_fusion_pass.cc ++++ b/mindspore/lite/src/litert/runtime_shape_fusion_pass.cc +@@ -52,12 +52,24 @@ int ShapeFusionPass::ConvertToShapeFusion(LiteGraph::Node *node) { + fbb.Clear(); + + auto shape_fusion_prim = flatbuffers::GetRoot(prim); +- MS_CHECK_TRUE_RET(shape_fusion_prim != nullptr, RET_ERROR); ++ if(shape_fusion_prim == nullptr){ ++ free(prim); ++ MS_LOG(ERROR) << "shape_fusion_prim is nullptr"; ++ return RET_ERROR; ++ } + ShapeFusionMatrix shape_fusion_matrix(shape.size()); +- MS_CHECK_TRUE_RET(!node->output_indices_.empty(), RET_ERROR); ++ if(node->output_indices_.empty()){ ++ free(prim); ++ MS_LOG(ERROR) << "node->output_indices_ is empty"; ++ return RET_ERROR; ++ } + shape_fusion_matrices_[node->output_indices_.front()] = shape_fusion_matrix; + auto shape_fusion_matrix_tensor = BuildTensorFromShapeFusionMatrix(shape_fusion_matrix); +- MS_CHECK_TRUE_RET(shape_fusion_matrix_tensor != nullptr, RET_ERROR); ++ if(shape_fusion_matrix_tensor == nullptr){ ++ free(prim); ++ MS_LOG(ERROR) << "shape_fusion_matrix_tensor is nullptr"; ++ return RET_ERROR; ++ } + + node->name_ += "_fusion"; + node->primitive_ = shape_fusion_prim; +-- +2.45.1.windows.1 + -- Gitee