From df102c98f385cff1865a93b7f293d6c3e6df8519 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Sun, 8 Mar 2026 20:05:32 +0100 Subject: [PATCH] Fix all psync_list_for_each_element_call to use pmem_free wrappers --- pclsync/pdownload.c | 4 ++-- pclsync/pfsupload.c | 2 +- pclsync/plist.c | 6 +++--- pclsync/plocalscan.c | 28 ++++++++++++++++++---------- pclsync/pnetlibs.c | 6 +++--- pclsync/ppagecache.c | 4 ++-- pclsync/psuggest.c | 2 +- pclsync/ptimer.c | 2 +- pclsync/pupload.c | 8 ++++---- 9 files changed, 35 insertions(+), 27 deletions(-) diff --git a/pclsync/pdownload.c b/pclsync/pdownload.c index bfa95a6..925caf4 100644 --- a/pclsync/pdownload.c +++ b/pclsync/pdownload.c @@ -863,7 +863,7 @@ static int task_download_file(download_task_t *dt) { // fileid); pdbg_logf(D_NOTICE, "file downloaded %s", dt->localname); pdbg_write_fs_event("file downloaded %s", dt->localname); - psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free); + psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free_download_range_list); if (tmpold) { pfile_delete(tmpold); pmem_free(PMEM_SUBSYS_DOWNLOAD, tmpold); @@ -878,7 +878,7 @@ err2: err1: pfile_close(fd); err0: - psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free); + psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free_download_range_list); if (tmpold) { pfile_delete(tmpold); pmem_free(PMEM_SUBSYS_DOWNLOAD, tmpold); diff --git a/pclsync/pfsupload.c b/pclsync/pfsupload.c index 262698c..75f6d97 100644 --- a/pclsync/pfsupload.c +++ b/pclsync/pfsupload.c @@ -2117,7 +2117,7 @@ static void pfs_upld_check_tasks() { psql_lock(); current_upload_batch = NULL; psql_unlock(); - psync_list_for_each_element_call(&tasks, fsupload_task_t, list, free); + psync_list_for_each_element_call(&tasks, fsupload_task_t, list, free_fsupload_task); } static void pfs_upld_thread() { diff --git a/pclsync/plist.c b/pclsync/plist.c index 58e44db..62bd187 100644 --- a/pclsync/plist.c +++ b/pclsync/plist.c @@ -296,9 +296,9 @@ void *psync_list_builder_finalize(psync_list_builder_t *builder) { } } - psync_list_for_each_element_call(&builder->element_list, psync_list_element_list, list, free); - psync_list_for_each_element_call(&builder->string_list, psync_list_string_list, list, free); - psync_list_for_each_element_call(&builder->number_list, psync_list_num_list, list, free); + psync_list_for_each_element_call(&builder->element_list, psync_list_element_list, list, free_list_element); + psync_list_for_each_element_call(&builder->string_list, psync_list_string_list, list, free_list_string); + psync_list_for_each_element_call(&builder->number_list, psync_list_num_list, list, free_list_num); pmem_free(PMEM_SUBSYS_OTHER, builder); return ret; } diff --git a/pclsync/plocalscan.c b/pclsync/plocalscan.c index c963ad0..dd21a1c 100644 --- a/pclsync/plocalscan.c +++ b/pclsync/plocalscan.c @@ -305,6 +305,14 @@ static void scanner_local_entry_to_list(void *ptr, ppath_stat *st) { psync_list_add_tail(lst, &e->list); } +static void free_sync_folderlist(sync_folderlist *elem) { + pmem_free(PMEM_SUBSYS_SYNC, elem); +} + +static void free_sync_list(sync_list *elem) { + pmem_free(PMEM_SUBSYS_SYNC, elem); +} + static int scanner_local_folder_to_list(const char *localpath, psync_list *lst) { psync_list_init(lst); @@ -560,7 +568,7 @@ scanner_scan_folder(const char *localpath, psync_folderid_t folderid, add_deleted_element(fdb, folderid, localfolderid, syncid, synctype); ldb = ldb->next; } - psync_list_for_each_element_call(&dblist, sync_folderlist, list, free); + psync_list_for_each_element_call(&dblist, sync_folderlist, list, free_sync_folderlist); if (localsleepperfolder) { psys_sleep_milliseconds(localsleepperfolder); if (__atomic_load_n(&psync_current_time, __ATOMIC_RELAXED) - starttime >= @@ -576,7 +584,7 @@ scanner_scan_folder(const char *localpath, psync_folderid_t folderid, pmem_free(PMEM_SUBSYS_SYNC, subpath); } - psync_list_for_each_element_call(&disklist, sync_folderlist, list, free); + psync_list_for_each_element_call(&disklist, sync_folderlist, list, free_sync_folderlist); } static int compare_sizeinodemtime(const psync_list *l1, const psync_list *l2) { @@ -1038,8 +1046,8 @@ restart: break; } } - psync_list_for_each_element_call(&slist, sync_list, list, free); - psync_list_for_each_element_call(&slist_full_deviceid, sync_list, list, free); + psync_list_for_each_element_call(&slist, sync_list, list, free_sync_list); + psync_list_for_each_element_call(&slist_full_deviceid, sync_list, list, free_sync_list); w = 0; do { @@ -1047,7 +1055,7 @@ restart: if (unlikely(restart_scan)) { pthread_mutex_unlock(&scan_mutex); for (i = 0; i < SCAN_LIST_CNT; i++) - psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free); + psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free_sync_folderlist); psys_sleep_milliseconds(restartsleep); if (restartsleep < 16000) restartsleep *= 2; @@ -1073,9 +1081,9 @@ restart: w++; check_for_query_cnt(); } - psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSROM], sync_folderlist, list, free); + psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSROM], sync_folderlist, list, free_sync_folderlist); psync_list_init(&scan_lists[SCAN_LIST_RENFOLDERSROM]); - psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSTO], sync_folderlist, list, free); + psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSTO], sync_folderlist, list, free_sync_folderlist); psync_list_init(&scan_lists[SCAN_LIST_RENFOLDERSTO]); psync_list_for_each_element(fl, &scan_lists[SCAN_LIST_NEWFOLDERS], sync_folderlist, list) { @@ -1093,7 +1101,7 @@ restart: } psync_list_for_each_element_call(&newtmp, sync_folderlist, list, scan_created_folder); - psync_list_for_each_element_call(&newtmp, sync_folderlist, list, free); + psync_list_for_each_element_call(&newtmp, sync_folderlist, list, free_sync_folderlist); } if (changes) { i++; @@ -1105,7 +1113,7 @@ restart: if (unlikely(restart_scan)) { pthread_mutex_unlock(&scan_mutex); for (i = 0; i < SCAN_LIST_CNT; i++) - psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free); + psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free_sync_folderlist); psys_sleep_milliseconds(restartsleep); if (restartsleep < 16000) restartsleep *= 2; @@ -1161,7 +1169,7 @@ restart: pstatus_upload_recalc_async(); } for (i = 0; i < SCAN_LIST_CNT; i++) - psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free); + psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free_sync_folderlist); if (movedfolders) { starttime = __atomic_load_n(&psync_current_time, __ATOMIC_RELAXED); restartsleep = 1000; diff --git a/pclsync/pnetlibs.c b/pclsync/pnetlibs.c index 9f57883..5654044 100644 --- a/pclsync/pnetlibs.c +++ b/pclsync/pnetlibs.c @@ -2128,7 +2128,7 @@ int psync_net_download_ranges(psync_list *ranges, psync_fileid_t fileid, range->off + range->len != blockactions[i].off))) { range = pmem_malloc(PMEM_SUBSYS_OTHER, sizeof(psync_range_list_t)); if (!range) { - psync_list_for_each_element_call(ranges, psync_range_list_t, list, free); + psync_list_for_each_element_call(ranges, psync_range_list_t, list, free_range_list); pmem_free(PMEM_SUBSYS_OTHER, blockactions); pmem_free(PMEM_SUBSYS_OTHER, checksums); return PSYNC_NET_TEMPFAIL; @@ -2227,7 +2227,7 @@ static int check_range_for_blocks(psync_file_checksums *checksums, if (!ur) { pmem_free(PMEM_SUBSYS_OTHER, buff); pfile_close(fd); - psync_list_for_each_element_call(nr, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(nr, psync_upload_range_list_t, list, free_upload_range_list_net); return -1; } ur->uploadoffset = off + buffoff + outbyteoff; @@ -2336,7 +2336,7 @@ static void merge_list_to_element(psync_upload_range_list_t *le, } else { n = pmem_malloc(PMEM_SUBSYS_OTHER, sizeof(psync_upload_range_list_t)); if (!n) { - psync_list_for_each_element_call(rlist, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(rlist, psync_upload_range_list_t, list, free_upload_range_list_net); return; } n->uploadoffset = n->off = ur->uploadoffset + ur->len; diff --git a/pclsync/ppagecache.c b/pclsync/ppagecache.c index def196e..f8c350d 100644 --- a/pclsync/ppagecache.c +++ b/pclsync/ppagecache.c @@ -3398,8 +3398,8 @@ int ppagecache_read_unmod_enc_locked(psync_openfile_t *of, if (!ret) ret = size; ret0: - psync_list_for_each_element_call(&waiting, psync_page_waiter_t, listwaiter, free); - psync_list_for_each_element_call(&auth_pages, psync_crypto_auth_page, list, free); + psync_list_for_each_element_call(&waiting, psync_page_waiter_t, listwaiter, free_page_waiter); + psync_list_for_each_element_call(&auth_pages, psync_crypto_auth_page, list, free_crypto_auth_page); for (i = 0; i < pagecnt; i++) if (dp[i].freebuff) pmem_free(PMEM_SUBSYS_CACHE, dp[i].buff); diff --git a/pclsync/psuggest.c b/pclsync/psuggest.c index aa6780f..19ce5d4 100644 --- a/pclsync/psuggest.c +++ b/pclsync/psuggest.c @@ -265,7 +265,7 @@ psuggested_folders_t *psuggest_scan_folder(const char *path) { pdbg_logf(D_NOTICE, "suggesting %s (%s, %s)", ret->entries[i].localpath, ret->entries[i].name, ret->entries[i].description); } - psync_list_for_each_element_call(&suggestions, suggested_folder, list, free); + psync_list_for_each_element_call(&suggestions, suggested_folder, list, free_suggested_folder); free_folder(f); return ret; } diff --git a/pclsync/ptimer.c b/pclsync/ptimer.c index 05c730c..8c0a21f 100644 --- a/pclsync/ptimer.c +++ b/pclsync/ptimer.c @@ -141,7 +141,7 @@ PSYNC_NOINLINE static void timer_process_timers(psync_list *timers) { } } pthread_mutex_unlock(&timer_mutex); - psync_list_for_each_element_call(timers, psync_timer_structure_t, list, free); + psync_list_for_each_element_call(timers, psync_timer_structure_t, list, free_timer); } static void timer_thread() { diff --git a/pclsync/pupload.c b/pclsync/pupload.c index 16852a8..9f4f58d 100644 --- a/pclsync/pupload.c +++ b/pclsync/pupload.c @@ -1027,7 +1027,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex, if (unlikely(fd == INVALID_HANDLE_VALUE)) { pdbg_logf(D_WARNING, "could not open local file %s", localpath); psync_apipool_release(api); - psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free_upload_range_list); return -1; } if (likely(uploadoffset < fsize)) { @@ -1240,7 +1240,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex, respwait++; uploadoffset += le->len; } - psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free_upload_range_list); if (pfile_size(fd) != fsize) { pdbg_logf(D_NOTICE, "file %s changed filesize while uploading, restarting task", localpath); @@ -1260,13 +1260,13 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex, } err1: pfile_close(fd); - psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free_upload_range_list); err0: psync_apipool_release_bad(api); return -1; errp: pfile_close(fd); - psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free); + psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free_upload_range_list); psync_apipool_release_bad(api); return 0; }