From 70edef1311dfd90eac4f3d570a0dcb4efc0b19f5 Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Wed, 5 Apr 2023 21:50:14 +0200 Subject: [PATCH] Cycles: Fix Metal use-after-free bug `entryPoint` was being used unsafely following its release. Pull Request: https://projects.blender.org/blender/blender/pulls/106572 --- intern/cycles/device/metal/kernel.mm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/intern/cycles/device/metal/kernel.mm b/intern/cycles/device/metal/kernel.mm index 8e092a3ebc5..ea0fb6ef3f4 100644 --- a/intern/cycles/device/metal/kernel.mm +++ b/intern/cycles/device/metal/kernel.mm @@ -445,12 +445,10 @@ void MetalKernelPipeline::compile() const std::string function_name = std::string("cycles_metal_") + device_kernel_as_string(device_kernel); - NSString *entryPoint = [@(function_name.c_str()) copy]; - NSError *error = NULL; if (@available(macOS 11.0, *)) { MTLFunctionDescriptor *func_desc = [MTLIntersectionFunctionDescriptor functionDescriptor]; - func_desc.name = entryPoint; + func_desc.name = [@(function_name.c_str()) copy]; if (pso_type != PSO_GENERIC) { func_desc.constantValues = GetConstantValues(&kernel_data_); @@ -462,8 +460,6 @@ void MetalKernelPipeline::compile() function = [mtlLibrary newFunctionWithDescriptor:func_desc error:&error]; } - [entryPoint release]; - if (function == nil) { NSString *err = [error localizedDescription]; string errors = [err UTF8String]; @@ -471,7 +467,7 @@ void MetalKernelPipeline::compile() return; } - function.label = [entryPoint copy]; + function.label = [@(function_name.c_str()) copy]; if (use_metalrt) { if (@available(macOS 11.0, *)) {