Skip to content

Commit 4d66dab

Browse files
author
osy
committed
Wrong reversed types caused patch to sometimes fail
1 parent 15fccb2 commit 4d66dab

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

Polaris22Fixup/kern_start.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static boolean_t patched_cs_validate_range(vnode_t vp,
118118
}
119119

120120
// For Big Sur
121-
static boolean_t patched_cs_validate_page(vnode_t vp,
121+
static void patched_cs_validate_page(vnode_t vp,
122122
memory_object_t pager,
123123
memory_object_offset_t page_offset,
124124
const void *data,
@@ -127,31 +127,29 @@ static boolean_t patched_cs_validate_page(vnode_t vp,
127127
int *arg6) {
128128
char path[kPathMaxLen];
129129
int pathlen = kPathMaxLen;
130-
boolean_t res = FunctionCast(patched_cs_validate_page, orig_cs_validate)(vp, pager, page_offset, data, arg4, arg5, arg6);
131-
if (res && vn_getpath(vp, path, &pathlen) == 0) {
130+
FunctionCast(patched_cs_validate_page, orig_cs_validate)(vp, pager, page_offset, data, arg4, arg5, arg6);
131+
if (vn_getpath(vp, path, &pathlen) == 0) {
132132
static_assert(sizeof(kAmdBronzeMtlDriverPath) <= sizeof(path), "path too long");
133133
static_assert(sizeof(kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal) == sizeof(kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched), "patch size invalid");
134134
if (UNLIKELY(strncmp(path, kAmdBronzeMtlDriverPath, sizeof(kAmdBronzeMtlDriverPath)) == 0)) {
135-
const void *start = (const char *)data - page_offset;
136135
void *res;
137-
SYSLOG(MODULE_SHORT, "found path: %s", path);
138-
if (UNLIKELY((res = memmem(start, page_offset, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize)) != NULL)) {
136+
if (UNLIKELY((res = memmem(data, PAGE_SIZE, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnOriginal, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize)) != NULL)) {
139137
SYSLOG(MODULE_SHORT, "found function to patch!");
138+
SYSLOG(MODULE_SHORT, "found path: %s", path);
140139
doKernelPatch(^{
141140
lilu_os_memcpy(res, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnPatched, kBigSurAmdBronzeMtlAddrLibGetBaseArrayModeReturnSize);
142141
});
143142
}
144143
}
145144
}
146-
return res;
147145
}
148146

149147
static int patched_IsEarlySAMUInitEnabled(void *ctx) {
150148
DBGLOG(MODULE_SHORT, "PECI_IsEarlySAMUInitEnabled: return 0");
151149
return 0;
152150
}
153151

154-
static int patched_getHardwareInfo(void *obj, uint32_t *hwInfo) {
152+
static int patched_getHardwareInfo(void *obj, uint16_t *hwInfo) {
155153
int ret = FunctionCast(patched_getHardwareInfo, orig_getHardwareInfo)(obj, hwInfo);
156154
DBGLOG(MODULE_SHORT, "AMDRadeonX4000_AMDAccelDevice::getHardwareInfo: return 0x%08X");
157155
if (ret == 0) {

0 commit comments

Comments
 (0)