Migrate malloc/calloc to pmem_malloc with subsystem tracking

This commit is contained in:
Levi Neely 2026-03-08 15:55:33 +01:00
parent fc44baab8b
commit 964a5fcde9
3 changed files with 44 additions and 30 deletions

View File

@ -314,9 +314,10 @@ static binresult *do_parse_result(unsigned char **restrict indata,
arr = NULL;
cnt = 0;
alloc = 128;
arr = (binresult **)pmem_calloc_safe(alloc, sizeof(binresult *));
arr = (binresult **)pmem_malloc(PMEM_SUBSYS_API, alloc * sizeof(binresult *));
if (!arr)
return NULL;
memset(arr, 0, alloc * sizeof(binresult *));
while (**indata != RPARAM_END) {
if (cnt == alloc) {
binresult **tmp;
@ -347,9 +348,10 @@ static binresult *do_parse_result(unsigned char **restrict indata,
arr = NULL;
cnt = 0;
alloc = 32;
arr = (struct _hashpair *)pmem_calloc_safe(alloc, sizeof(struct _hashpair));
arr = (struct _hashpair *)pmem_malloc(PMEM_SUBSYS_API, alloc * sizeof(struct _hashpair));
if (!arr)
return NULL;
memset(arr, 0, alloc * sizeof(struct _hashpair));
while (**indata != RPARAM_END) {
if (cnt == alloc) {
struct _hashpair *tmp;
@ -399,17 +401,19 @@ static binresult *parse_result(unsigned char *data, size_t datalen) {
retlen = calc_ret_len(&datac, &datalenc, &strcnt);
if (retlen == -1)
return NULL;
datac = pmem_calloc_safe(retlen, sizeof(unsigned char));
datac = pmem_malloc(PMEM_SUBSYS_API, retlen * sizeof(unsigned char));
if (!datac)
return NULL;
strings = pmem_calloc_safe(strcnt, sizeof(binresult *));
memset(datac, 0, retlen * sizeof(unsigned char));
strings = pmem_malloc(PMEM_SUBSYS_API, strcnt * sizeof(binresult *));
if (!strings) {
free(datac);
pmem_free(PMEM_SUBSYS_API, datac);
return NULL;
}
memset(strings, 0, strcnt * sizeof(binresult *));
strcnt = 0;
res = do_parse_result(&data, &datac, strings, &strcnt);
free(strings);
pmem_free(PMEM_SUBSYS_API, strings);
return res;
}

View File

@ -104,18 +104,20 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
if (unlikely(numparam == 1))
return -3;
t = (binparam *)pmem_calloc_safe(numparam, sizeof(binparam));
t = (binparam *)pmem_malloc(PMEM_SUBSYS_API, numparam * sizeof(binparam));
if (!t)
return -1;
memset(t, 0, numparam * sizeof(binparam));
init_param_str(t, "auth", psync_my_auth);
if (nusershareid) {
ids1 = (char *)pmem_calloc_safe(nusershareid, FOLDERID_ENTRY_SIZE);
ids1 = (char *)pmem_malloc(PMEM_SUBSYS_API, nusershareid * FOLDERID_ENTRY_SIZE);
if (!ids1) {
free(t);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(ids1, 0, nusershareid * FOLDERID_ENTRY_SIZE);
idsp = ids1;
for (i = 0; i < nusershareid; ++i) {
k = sprintf(idsp, "%lld", (long long)usershareids[i]);
@ -131,13 +133,14 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
}
if (nteamshareid) {
ids2 = (char *)pmem_calloc_safe(nteamshareid, FOLDERID_ENTRY_SIZE);
ids2 = (char *)pmem_malloc(PMEM_SUBSYS_API, nteamshareid * FOLDERID_ENTRY_SIZE);
if (!ids2) {
if (nusershareid)
free(ids1);
free(t);
pmem_free(PMEM_SUBSYS_API, ids1);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(ids2, 0, nteamshareid * FOLDERID_ENTRY_SIZE);
idsp = ids2;
for (i = 0; i < nteamshareid; ++i) {
k = sprintf(idsp, "%lld", (long long)teamshareids[i]);
@ -222,25 +225,28 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
if (unlikely(numparam == 1))
return -3;
t = (binparam *)pmem_calloc_safe(numparam, sizeof(binparam));
t = (binparam *)pmem_malloc(PMEM_SUBSYS_API, numparam * sizeof(binparam));
if (!t)
return -1;
memset(t, 0, numparam * sizeof(binparam));
init_param_str(t, "auth", psync_my_auth);
if (nushid) {
ids1 = (char *)pmem_calloc_safe(nushid, FOLDERID_ENTRY_SIZE);
ids1 = (char *)pmem_malloc(PMEM_SUBSYS_API, nushid * FOLDERID_ENTRY_SIZE);
if (!ids1) {
free(t);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(ids1, 0, nushid * FOLDERID_ENTRY_SIZE);
idsp = ids1;
perms1 = (char *)pmem_calloc_safe(nushid, FOLDERID_ENTRY_SIZE);
perms1 = (char *)pmem_malloc(PMEM_SUBSYS_API, nushid * FOLDERID_ENTRY_SIZE);
if (!perms1) {
free(ids1);
free(t);
pmem_free(PMEM_SUBSYS_API, ids1);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(perms1, 0, nushid * FOLDERID_ENTRY_SIZE);
permsp = perms1;
for (i = 0; i < nushid; ++i) {
k = sprintf(idsp, "%lld", (long long)usrshrids[i]);
@ -265,26 +271,28 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
}
if (ntmshid) {
ids2 = (char *)pmem_calloc_safe(ntmshid, FOLDERID_ENTRY_SIZE);
ids2 = (char *)pmem_malloc(PMEM_SUBSYS_API, ntmshid * FOLDERID_ENTRY_SIZE);
if (!ids2) {
if (nushid) {
free(perms1);
free(ids1);
pmem_free(PMEM_SUBSYS_API, perms1);
pmem_free(PMEM_SUBSYS_API, ids1);
}
free(t);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(ids2, 0, ntmshid * FOLDERID_ENTRY_SIZE);
idsp = ids2;
perms2 = (char *)pmem_calloc_safe(ntmshid, FOLDERID_ENTRY_SIZE);
perms2 = (char *)pmem_malloc(PMEM_SUBSYS_API, ntmshid * FOLDERID_ENTRY_SIZE);
if (!perms2) {
free(ids2);
pmem_free(PMEM_SUBSYS_API, ids2);
if (nushid) {
free(perms1);
free(ids1);
pmem_free(PMEM_SUBSYS_API, perms1);
pmem_free(PMEM_SUBSYS_API, ids1);
}
free(t);
pmem_free(PMEM_SUBSYS_API, t);
return -1;
}
memset(perms2, 0, ntmshid * FOLDERID_ENTRY_SIZE);
permsp = perms2;
for (i = 0; i < ntmshid; ++i) {

View File

@ -136,10 +136,11 @@ int ptools_create_backend_event(const char *binapi, const char *category,
paramsLocal[5] = (binparam)PAPI_NUM(EPARAM_TIME, etime);
if (pCnt > 0) {
keyParams = (char *)pmem_calloc_safe(pCnt, 258);
keyParams = (char *)pmem_malloc(PMEM_SUBSYS_OTHER, pCnt * 258);
if (!keyParams) {
return -1;
}
memset(keyParams, 0, pCnt * 258);
keyParams[0] = 0;
for (i = 0; i < pCnt; i++) {
@ -375,7 +376,7 @@ int ptools_backend_call(const char *binapi, const char *wsPath,
if (strlen(payloadName) > 0) {
payload = (binresult *)papi_find_result2(res, payloadName, PARAM_HASH);
*resData = (binresult *)pmem_calloc_safe(payload->length, sizeof(binresult));
*resData = (binresult *)pmem_malloc(PMEM_SUBSYS_OTHER, payload->length * sizeof(binresult));
if (!*resData) {
return -1;
}
@ -457,10 +458,11 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
int intRes;
int syncCnt = 0;
errMsg = (char *)pmem_calloc_safe(1024, sizeof(char));
errMsg = (char *)pmem_malloc(PMEM_SUBSYS_OTHER, 1024 * sizeof(char));
if (!errMsg) {
return;
}
memset(errMsg, 0, 1024 * sizeof(char));
errMsg[0] = 0;
time(&rawtime);