diff --git a/src/plugins/intel_cpu/src/nodes/input.cpp b/src/plugins/intel_cpu/src/nodes/input.cpp index 1425e70f77d..bcbe95ddf91 100644 --- a/src/plugins/intel_cpu/src/nodes/input.cpp +++ b/src/plugins/intel_cpu/src/nodes/input.cpp @@ -254,7 +254,17 @@ void MKLDNNInputNode::cloneBlobIfRequired() { auto cloneBlob = [&, this] () { MKLDNNMemory memory{ getEngine() }; - memory.Create(memDesc, constOp->get_data_ptr()); + + // CVS-74980 + // MKLDNN/oneDNN always allocate 1byte for element type with bitWidth < 8 (u4,u1...) + // but ngraph Constant uses actual bitWidth for data storage allocation + // in that case we make a copy to avoid overflow + if (constOp->get_byte_size() >= memDesc.getCurrentMemSize()) { + memory.Create(memDesc, constOp->get_data_ptr()); + } else { + memory.Create(memDesc); + memcpy(memory.GetPtr(), constOp->get_data_ptr(), constOp->get_byte_size()); + } MKLDNNMemoryPtr ptr = MKLDNNMemoryPtr(new MKLDNNMemory(getEngine())); ptr->Create(memDesc);