Rev 1437 | Rev 1468 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1437 | Rev 1461 | ||
---|---|---|---|
Line 514... | Line 514... | ||
514 | src_size = src_area->pages * PAGE_SIZE; |
514 | src_size = src_area->pages * PAGE_SIZE; |
515 | src_flags = src_area->flags; |
515 | src_flags = src_area->flags; |
516 | src_backend = src_area->backend; |
516 | src_backend = src_area->backend; |
517 | src_backend_data = src_area->backend_data; |
517 | src_backend_data = src_area->backend_data; |
518 | 518 | ||
519 | if (src_size != acc_size) { |
519 | if (src_size != acc_size || (src_flags & dst_flags_mask) != dst_flags_mask) { |
520 | mutex_unlock(&src_area->lock); |
520 | mutex_unlock(&src_area->lock); |
521 | mutex_unlock(&src_as->lock); |
521 | mutex_unlock(&src_as->lock); |
522 | interrupts_restore(ipl); |
522 | interrupts_restore(ipl); |
523 | return EPERM; |
523 | return EPERM; |
524 | } |
524 | } |
Line 552... | Line 552... | ||
552 | * attribute set which prevents race condition with |
552 | * attribute set which prevents race condition with |
553 | * preliminary as_page_fault() calls. |
553 | * preliminary as_page_fault() calls. |
554 | * The flags of the source area are masked against dst_flags_mask |
554 | * The flags of the source area are masked against dst_flags_mask |
555 | * to support sharing in less privileged mode. |
555 | * to support sharing in less privileged mode. |
556 | */ |
556 | */ |
557 | dst_area = as_area_create(dst_as, src_flags & dst_flags_mask, src_size, dst_base, |
557 | dst_area = as_area_create(dst_as, dst_flags_mask, src_size, dst_base, |
558 | AS_AREA_ATTR_PARTIAL, src_backend, &src_backend_data); |
558 | AS_AREA_ATTR_PARTIAL, src_backend, &src_backend_data); |
559 | if (!dst_area) { |
559 | if (!dst_area) { |
560 | /* |
560 | /* |
561 | * Destination address space area could not be created. |
561 | * Destination address space area could not be created. |
562 | */ |
562 | */ |