@@ -51,6 +51,15 @@ static const uint8_t kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched[]
5151 0x0f , 0x95 , 0xc0 , 0x31 , 0xc0 , 0x83 , 0xc0 , 0x02 , 0x5d , 0xc3 , 0x55 ,
5252};
5353
54+ static const uint8_t kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal [] = {
55+ 0x83 , 0xc0 , 0x02 , 0xeb , 0x0e , 0x31 , 0xc0 , 0xf6 , 0x47 , 0x08 , 0xc0 , 0x0f , 0x95 , 0xc0 , 0x01 , 0xc0 , 0x83 , 0xc0 , 0x02 , 0x5d , 0xc3 , 0x55 ,
56+ };
57+
58+ static const uint8_t kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched [] = {
59+ 0x83 , 0xc0 , 0x02 , 0xeb , 0x09 , 0x31 , 0xc0 , 0xf6 , 0x47 , 0x08 , 0xc0 , 0x0f , 0x95 , 0xc0 , 0x31 , 0xc0 , 0x83 , 0xc0 , 0x02 , 0x5d , 0xc3 , 0x55 ,
60+ };
61+
62+
5463static constexpr size_t kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize = sizeof (kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal );
5564
5665static_assert (kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize == sizeof (kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched ), " patch size invalid" );
@@ -183,11 +192,19 @@ static void patched_cs_validate_page(vnode_t vp,
183192 DBGLOG (MODULE_SHORT, " found function to patch at %s!" , path);
184193 return ;
185194 }
186- // covers pattern in macOS 12.3+
195+ // covers pattern in macOS 13.3+
196+ // patch for 12.3-13.3 is a substring of this patch. So run this first.
197+ // TODO: use getKernelVersion and KernelMinorVersion in Lilu for more clear implementation
198+ if (UNLIKELY (KernelPatcher::findAndReplace (const_cast <void *>(data), PAGE_SIZE, kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal , sizeof (kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal ), kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched , sizeof (kVentura133AmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched )))) {
199+ DBGLOG (MODULE_SHORT, " found function to patch at %s!" , path);
200+ return ;
201+ }
202+ // covers pattern in macOS 12.3 - 13.2
187203 if (UNLIKELY (KernelPatcher::findAndReplace (const_cast <void *>(data), PAGE_SIZE, kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal , sizeof (kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal ), kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched , sizeof (kMontereyAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched )))) {
188204 DBGLOG (MODULE_SHORT, " found function to patch at %s!" , path);
189205 return ;
190206 }
207+
191208 }
192209}
193210
0 commit comments