Ignore:
File:
1 edited

Legend:

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

    r83b6ba9f r59fb782  
    7676        .page_fault = anon_page_fault,
    7777        .frame_free = anon_frame_free,
    78 
    79         .create_shared_data = NULL,
    80         .destroy_shared_data = NULL
    8178};
    8279
     
    121118         */
    122119        mutex_lock(&area->sh_info->lock);
    123         list_foreach(area->used_space.leaf_list, leaf_link, btree_node_t,
    124             node) {
     120        list_foreach(area->used_space.leaf_list, cur) {
     121                btree_node_t *node;
    125122                unsigned int i;
    126123               
     124                node = list_get_instance(cur, btree_node_t, leaf_link);
    127125                for (i = 0; i < node->keys; i++) {
    128126                        uintptr_t base = node->key[i];
     
    193191                return AS_PF_FAULT;
    194192
    195         mutex_lock(&area->sh_info->lock);
    196         if (area->sh_info->shared) {
     193        if (area->sh_info) {
    197194                btree_node_t *leaf;
    198195               
     
    204201                 * mapping, a new frame is allocated and the mapping is created.
    205202                 */
     203                mutex_lock(&area->sh_info->lock);
    206204                frame = (uintptr_t) btree_search(&area->sh_info->pagemap,
    207205                    upage - area->base, &leaf);
     
    235233                }
    236234                frame_reference_add(ADDR2PFN(frame));
     235                mutex_unlock(&area->sh_info->lock);
    237236        } else {
    238237
     
    256255                         * Reserve the memory for this page now.
    257256                         */
    258                         if (!reserve_try_alloc(1)) {
    259                                 mutex_unlock(&area->sh_info->lock);
     257                        if (!reserve_try_alloc(1))
    260258                                return AS_PF_SILENT;
    261                         }
    262259                }
    263260
     
    266263                km_temporary_page_put(kpage);
    267264        }
    268         mutex_unlock(&area->sh_info->lock);
    269265       
    270266        /*
     
    299295                 * the normal unreserving frame_free().
    300296                 */
    301                 frame_free(frame, 1);
     297                frame_free(frame);
    302298        } else {
    303299                /*
     
    306302                 * manipulate the reserve or it would be given back twice.
    307303                 */
    308                 frame_free_noreserve(frame, 1);
     304                frame_free_noreserve(frame);
    309305        }
    310306}
Note: See TracChangeset for help on using the changeset viewer.