Changes in kernel/generic/src/mm/backend_anon.c [83b6ba9f:59fb782] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_anon.c
r83b6ba9f r59fb782 76 76 .page_fault = anon_page_fault, 77 77 .frame_free = anon_frame_free, 78 79 .create_shared_data = NULL,80 .destroy_shared_data = NULL81 78 }; 82 79 … … 121 118 */ 122 119 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; 125 122 unsigned int i; 126 123 124 node = list_get_instance(cur, btree_node_t, leaf_link); 127 125 for (i = 0; i < node->keys; i++) { 128 126 uintptr_t base = node->key[i]; … … 193 191 return AS_PF_FAULT; 194 192 195 mutex_lock(&area->sh_info->lock); 196 if (area->sh_info->shared) { 193 if (area->sh_info) { 197 194 btree_node_t *leaf; 198 195 … … 204 201 * mapping, a new frame is allocated and the mapping is created. 205 202 */ 203 mutex_lock(&area->sh_info->lock); 206 204 frame = (uintptr_t) btree_search(&area->sh_info->pagemap, 207 205 upage - area->base, &leaf); … … 235 233 } 236 234 frame_reference_add(ADDR2PFN(frame)); 235 mutex_unlock(&area->sh_info->lock); 237 236 } else { 238 237 … … 256 255 * Reserve the memory for this page now. 257 256 */ 258 if (!reserve_try_alloc(1)) { 259 mutex_unlock(&area->sh_info->lock); 257 if (!reserve_try_alloc(1)) 260 258 return AS_PF_SILENT; 261 }262 259 } 263 260 … … 266 263 km_temporary_page_put(kpage); 267 264 } 268 mutex_unlock(&area->sh_info->lock);269 265 270 266 /* … … 299 295 * the normal unreserving frame_free(). 300 296 */ 301 frame_free(frame , 1);297 frame_free(frame); 302 298 } else { 303 299 /* … … 306 302 * manipulate the reserve or it would be given back twice. 307 303 */ 308 frame_free_noreserve(frame , 1);304 frame_free_noreserve(frame); 309 305 } 310 306 }
Note:
See TracChangeset
for help on using the changeset viewer.