Skip to content

Commit 2f3b7f0

Browse files
authored
[NPU] Fix Coverity issues (#34632)
### Details: - *Fix Coverity issues* ### Tickets: - *E#207793* ### AI Assistance: - *AI assistance used: no / yes* - *If yes, summarize how AI was used and what human validation was performed (build/tests/manual checks).* Signed-off-by: Bogdan Pereanu <bogdan.pereanu@intel.com>
1 parent 193f280 commit 2f3b7f0

File tree

4 files changed

+60
-22
lines changed

4 files changed

+60
-22
lines changed

src/plugins/intel_npu/src/backend/src/zero_dynamic_infer_request.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ void ZeroDynamicInferRequest::predict_shapes(std::vector<IDynamicGraph::MemRefTy
213213
auto& userTensor = get_user_input(i);
214214
if (userTensor != nullptr) {
215215
// If userTensor is set, use userTensor to update memref handle
216-
inputPros[i].set(get_tensor_data_ptr(userTensor._ptr), 0, userTensor._ptr);
216+
const auto userTensorPtr = userTensor._ptr;
217+
OPENVINO_ASSERT(userTensorPtr != nullptr, "Input user tensor pointer is null");
218+
inputPros[i].set(get_tensor_data_ptr(userTensorPtr), 0, userTensorPtr);
217219
} else if (levelZeroTensor != nullptr) {
218220
// If userTensor is not set, use levelZeroTensor to update memref handle
219221
inputPros[i].set(get_tensor_data_ptr(levelZeroTensor), 0, levelZeroTensor);
@@ -233,7 +235,9 @@ void ZeroDynamicInferRequest::predict_shapes(std::vector<IDynamicGraph::MemRefTy
233235
auto& userTensor = _userOutputTensors.at(i);
234236
if (userTensor != nullptr) {
235237
// If userTensor is set, use userTensor to update memref handle
236-
outputProps[i].set(get_tensor_data_ptr(userTensor._ptr), 0, userTensor._ptr);
238+
const auto userTensorPtr = userTensor._ptr;
239+
OPENVINO_ASSERT(userTensorPtr != nullptr, "Output user tensor pointer is null");
240+
outputProps[i].set(get_tensor_data_ptr(userTensorPtr), 0, userTensorPtr);
237241
} else if (levelZeroTensor != nullptr) {
238242
// If userTensor is not set, use levelZeroTensor to update memref handle
239243
outputProps[i].set(get_tensor_data_ptr(levelZeroTensor), 0, levelZeroTensor);

src/plugins/intel_npu/src/backend/src/zero_dynamic_pipeline.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,9 @@ DynamicPipeline::DynamicPipeline(const Config& config,
207207
void DynamicPipeline::push() {
208208
_logger.debug("DynamicPipeline - push() started");
209209

210+
auto* dynamicGraph = dynamic_cast<IDynamicGraph*>(_graph.get());
211+
OPENVINO_ASSERT(dynamicGraph != nullptr, "Failed to cast graph to IDynamicGraph");
212+
210213
if (_init_structs->getCommandQueueDdiTable().version() < ZE_MAKE_VERSION(1, 1) &&
211214
_config.get<RUN_INFERENCES_SEQUENTIALLY>()) {
212215
if (_id) {
@@ -246,14 +249,13 @@ void DynamicPipeline::push() {
246249
// L0 wrapper handle closed command list
247250
command_lists->resetCommandList();
248251

249-
dynamic_cast<IDynamicGraph*>(_graph.get())
250-
->execute(_init_structs,
251-
command_lists->getBinding(),
252-
command_lists->getHandles(),
253-
commandQueueHandle,
254-
fence,
255-
event,
256-
nullptr);
252+
dynamicGraph->execute(_init_structs,
253+
command_lists->getBinding(),
254+
command_lists->getHandles(),
255+
commandQueueHandle,
256+
fence,
257+
event,
258+
nullptr);
257259
}
258260

259261
_logger.debug("DynamicPipeline - push() completed");

src/plugins/intel_npu/src/plugin/include/properties.hpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,22 @@ class Properties final {
7575
ov::intel_npu::CompilerType determineCompilerType(const ov::AnyMap& properties) const;
7676

7777
private:
78+
struct CopyState {
79+
PropertiesType pType;
80+
FilteredConfig config;
81+
std::shared_ptr<Metrics> metrics;
82+
ov::SoPtr<IEngineBackend> backend;
83+
Logger logger;
84+
ov::intel_npu::CompilerType currentlyUsedCompiler;
85+
std::string currentlyUsedPlatform;
86+
bool compilerConfigsFilteredByCompiler;
87+
std::map<std::string, std::tuple<bool, ov::PropertyMutability, std::function<ov::Any(const Config&)>>>
88+
properties;
89+
std::vector<ov::PropertyName> supportedProperties;
90+
};
91+
92+
explicit Properties(CopyState&& state);
93+
7894
PropertiesType _pType;
7995
FilteredConfig _config;
8096
std::shared_ptr<Metrics> _metrics;
@@ -200,7 +216,7 @@ class Properties final {
200216
ov::internal::caching_with_mmap.name(),
201217
ov::internal::cache_header_alignment.name()};
202218

203-
std::mutex _mutex;
219+
mutable std::mutex _mutex;
204220
};
205221

206222
} // namespace intel_npu

src/plugins/intel_npu/src/plugin/src/properties.cpp

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -434,16 +434,31 @@ Properties::Properties(const PropertiesType pType,
434434
}
435435

436436
Properties::Properties(const Properties& other)
437-
: _pType(other._pType),
438-
_config(other._config),
439-
_metrics(other._metrics),
440-
_backend(other._backend),
441-
_logger("Properties", _config.get<LOG_LEVEL>()),
442-
_currentlyUsedCompiler(other._currentlyUsedCompiler),
443-
_currentlyUsedPlatform(other._currentlyUsedPlatform),
444-
_compilerConfigsFilteredByCompiler(other._compilerConfigsFilteredByCompiler),
445-
_properties(other._properties),
446-
_supportedProperties(other._supportedProperties) {}
437+
: Properties([&other]() {
438+
std::lock_guard<std::mutex> lock(other._mutex);
439+
return CopyState{other._pType,
440+
other._config,
441+
other._metrics,
442+
other._backend,
443+
other._logger,
444+
other._currentlyUsedCompiler,
445+
other._currentlyUsedPlatform,
446+
other._compilerConfigsFilteredByCompiler,
447+
other._properties,
448+
other._supportedProperties};
449+
}()) {}
450+
451+
Properties::Properties(CopyState&& state)
452+
: _pType(state.pType),
453+
_config(std::move(state.config)),
454+
_metrics(std::move(state.metrics)),
455+
_backend(std::move(state.backend)),
456+
_logger(std::move(state.logger)),
457+
_currentlyUsedCompiler(state.currentlyUsedCompiler),
458+
_currentlyUsedPlatform(std::move(state.currentlyUsedPlatform)),
459+
_compilerConfigsFilteredByCompiler(state.compilerConfigsFilteredByCompiler),
460+
_properties(std::move(state.properties)),
461+
_supportedProperties(std::move(state.supportedProperties)) {}
447462

448463
void Properties::registerProperties() {
449464
// Reset
@@ -912,12 +927,13 @@ ov::Any Properties::getProperty(const std::string& name) {
912927
}
913928

914929
void Properties::setProperty(const ov::AnyMap& properties) {
930+
std::lock_guard<std::mutex> lock(_mutex);
931+
915932
if (properties.count(ov::log::level.name()) != 0) {
916933
_logger.setLevel(properties.at(ov::log::level.name()).as<ov::log::Level>());
917934
}
918935

919936
std::unique_ptr<ICompilerAdapter> compiler = nullptr;
920-
std::lock_guard<std::mutex> lock(_mutex);
921937
if (_pType == PropertiesType::PLUGIN) {
922938
bool propertyIsCompilerConfig = false;
923939
bool propertyIsRegistered = true;

0 commit comments

Comments
 (0)