Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/backend_elf.c

    r83b6ba9f r59fb782  
    7575        .page_fault = elf_page_fault,
    7676        .frame_free = elf_frame_free,
    77 
    78         .create_shared_data = NULL,
    79         .destroy_shared_data = NULL
    8077};
    8178
     
    277274        start_anon = entry->p_vaddr + entry->p_filesz;
    278275
    279         mutex_lock(&area->sh_info->lock);
    280         if (area->sh_info->shared) {
     276        if (area->sh_info) {
    281277                bool found = false;
    282278
     
    285281                 */
    286282               
     283                mutex_lock(&area->sh_info->lock);
    287284                frame = (uintptr_t) btree_search(&area->sh_info->pagemap,
    288285                    upage - area->base, &leaf);
     
    387384        }
    388385
    389         if (dirty && area->sh_info->shared) {
     386        if (dirty && area->sh_info) {
    390387                frame_reference_add(ADDR2PFN(frame));
    391388                btree_insert(&area->sh_info->pagemap, upage - area->base,
     
    393390        }
    394391
    395         mutex_unlock(&area->sh_info->lock);
     392        if (area->sh_info)
     393                mutex_unlock(&area->sh_info->lock);
    396394
    397395        page_mapping_insert(AS, upage, frame, as_area_get_flags(area));
     
    431429                         * data.
    432430                         */
    433                         frame_free_noreserve(frame, 1);
     431                        frame_free_noreserve(frame);
    434432                }
    435433        } else {
     
    439437                 * anonymous). In any case, a frame needs to be freed.
    440438                 */
    441                 frame_free_noreserve(frame, 1);
     439                frame_free_noreserve(frame);
    442440        }
    443441}
Note: See TracChangeset for help on using the changeset viewer.