From e1fb1f9f9af89608cd44f006a1c38e3ec87da2f4 Mon Sep 17 00:00:00 2001 From: Abdelaziz Mahdy Date: Sun, 14 Dec 2025 19:51:54 -0400 Subject: [PATCH 1/2] Add null pointer check in XNNWeightsCache::look_up_or_insert --- backends/xnnpack/runtime/XNNWeightsCache.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backends/xnnpack/runtime/XNNWeightsCache.cpp b/backends/xnnpack/runtime/XNNWeightsCache.cpp index 54191b72825..e2b96ab78cd 100644 --- a/backends/xnnpack/runtime/XNNWeightsCache.cpp +++ b/backends/xnnpack/runtime/XNNWeightsCache.cpp @@ -208,6 +208,11 @@ size_t XNNWeightsCache::look_up_or_insert( if (offset != SIZE_MAX) { void* saved_ptr = context->offset_to_addr(context, offset); + // Check for null pointers before calling memcmp + if (ptr == nullptr || saved_ptr == nullptr) { + // If either pointer is null, cache is invalid + return SIZE_MAX; + } if (0 == memcmp(ptr, saved_ptr, size)) { return offset; } From 11d2980336f06c614c9b6b0714d2d695a7a741cd Mon Sep 17 00:00:00 2001 From: Abdelaziz Mahdy Date: Sun, 14 Dec 2025 20:04:31 -0400 Subject: [PATCH 2/2] Update backends/xnnpack/runtime/XNNWeightsCache.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- backends/xnnpack/runtime/XNNWeightsCache.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backends/xnnpack/runtime/XNNWeightsCache.cpp b/backends/xnnpack/runtime/XNNWeightsCache.cpp index e2b96ab78cd..303076460ed 100644 --- a/backends/xnnpack/runtime/XNNWeightsCache.cpp +++ b/backends/xnnpack/runtime/XNNWeightsCache.cpp @@ -210,7 +210,8 @@ size_t XNNWeightsCache::look_up_or_insert( void* saved_ptr = context->offset_to_addr(context, offset); // Check for null pointers before calling memcmp if (ptr == nullptr || saved_ptr == nullptr) { - // If either pointer is null, cache is invalid + // If either pointer is null (due to deleted data or allocation failure), treat as cache miss + // and return SIZE_MAX to trigger reinsertion. return SIZE_MAX; } if (0 == memcmp(ptr, saved_ptr, size)) {