Skip to content

Commit 70fb861

Browse files
committed
Fix patch in 11.3
1 parent dbf3608 commit 70fb861

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

Polaris22Fixup/kern_start.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ static void doKernelPatch(void (^patchFunc)(void)) {
9090
}
9191

9292
template <size_t patchSize>
93-
static inline void searchAndPatch(const void *haystack,
93+
static inline bool searchAndPatch(const void *haystack,
9494
size_t haystackSize,
9595
const char (&path)[kPathMaxLen],
9696
const char (&dylibCachePath)[kPathMaxLen],
@@ -105,8 +105,10 @@ static inline void searchAndPatch(const void *haystack,
105105
doKernelPatch(^{
106106
lilu_os_memcpy(res, patch, patchSize);
107107
});
108+
return true;
108109
}
109110
}
111+
return false;
110112
}
111113

112114
#pragma mark - Patched functions
@@ -139,7 +141,14 @@ static void patched_cs_validate_page(vnode_t vp,
139141
int pathlen = kPathMaxLen;
140142
FunctionCast(patched_cs_validate_page, orig_cs_validate)(vp, pager, page_offset, data, arg4, arg5, arg6);
141143
if (vn_getpath(vp, path, &pathlen) == 0) {
142-
searchAndPatch(data, PAGE_SIZE, path, kBigSurDyldCachePath, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched);
144+
// covers pattern in macOS 11.0-11.2
145+
if (searchAndPatch(data, PAGE_SIZE, path, kBigSurDyldCachePath, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched)) {
146+
return;
147+
}
148+
// covers pattern in macOS 11.3
149+
if (searchAndPatch(data, PAGE_SIZE, path, kBigSurDyldCachePath, kAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, kAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched)) {
150+
return;
151+
}
143152
}
144153
}
145154

0 commit comments

Comments
 (0)