Changes in kernel/generic/src/mm/backend_elf.c [59fb782:83b6ba9f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_elf.c
r59fb782 r83b6ba9f 75 75 .page_fault = elf_page_fault, 76 76 .frame_free = elf_frame_free, 77 78 .create_shared_data = NULL, 79 .destroy_shared_data = NULL 77 80 }; 78 81 … … 274 277 start_anon = entry->p_vaddr + entry->p_filesz; 275 278 276 if (area->sh_info) { 279 mutex_lock(&area->sh_info->lock); 280 if (area->sh_info->shared) { 277 281 bool found = false; 278 282 … … 281 285 */ 282 286 283 mutex_lock(&area->sh_info->lock);284 287 frame = (uintptr_t) btree_search(&area->sh_info->pagemap, 285 288 upage - area->base, &leaf); … … 384 387 } 385 388 386 if (dirty && area->sh_info ) {389 if (dirty && area->sh_info->shared) { 387 390 frame_reference_add(ADDR2PFN(frame)); 388 391 btree_insert(&area->sh_info->pagemap, upage - area->base, … … 390 393 } 391 394 392 if (area->sh_info) 393 mutex_unlock(&area->sh_info->lock); 395 mutex_unlock(&area->sh_info->lock); 394 396 395 397 page_mapping_insert(AS, upage, frame, as_area_get_flags(area)); … … 429 431 * data. 430 432 */ 431 frame_free_noreserve(frame );433 frame_free_noreserve(frame, 1); 432 434 } 433 435 } else { … … 437 439 * anonymous). In any case, a frame needs to be freed. 438 440 */ 439 frame_free_noreserve(frame );441 frame_free_noreserve(frame, 1); 440 442 } 441 443 }
Note:
See TracChangeset
for help on using the changeset viewer.