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