102 |
return 0; |
return 0; |
103 |
} |
} |
104 |
|
|
105 |
int DelDomainACL(struct acl_info *ptr) |
int DelDomainACL(void) |
106 |
{ |
{ |
|
ptr->is_deleted = 1; |
|
107 |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
UpdateCounter(CCS_UPDATES_COUNTER_DOMAIN_POLICY); |
108 |
return 0; |
return 0; |
109 |
} |
} |
505 |
#ifdef DEBUG_DOMAIN_UNDELETE |
#ifdef DEBUG_DOMAIN_UNDELETE |
506 |
printk("Reusing %p %s\n", domain, domain->domainname->name); |
printk("Reusing %p %s\n", domain, domain->domainname->name); |
507 |
#endif |
#endif |
508 |
list1_for_each_entry(ptr, &domain->acl_info_list, list) ptr->is_deleted = 1; |
list1_for_each_entry(ptr, &domain->acl_info_list, list) { |
509 |
|
switch (ptr->type) { |
510 |
|
case TYPE_SINGLE_PATH_ACL: |
511 |
|
container_of(ptr, struct single_path_acl_record, head)->perm = 0; |
512 |
|
break; |
513 |
|
case TYPE_SINGLE_PATH_ACL_WITH_CONDITION: |
514 |
|
container_of(ptr, struct single_path_acl_record_with_condition, record.head)->record.perm = 0; |
515 |
|
break; |
516 |
|
case TYPE_DOUBLE_PATH_ACL: |
517 |
|
container_of(ptr, struct double_path_acl_record, head)->perm = 0; |
518 |
|
break; |
519 |
|
case TYPE_DOUBLE_PATH_ACL_WITH_CONDITION: |
520 |
|
container_of(ptr, struct double_path_acl_record_with_condition, record.head)->record.perm = 0; |
521 |
|
break; |
522 |
|
case TYPE_ARGV0_ACL: |
523 |
|
container_of(ptr, struct argv0_acl_record, head)->is_deleted = 1; |
524 |
|
break; |
525 |
|
case TYPE_ARGV0_ACL_WITH_CONDITION: |
526 |
|
container_of(ptr, struct argv0_acl_record_with_condition, record.head)->record.is_deleted = 1; |
527 |
|
break; |
528 |
|
case TYPE_ENV_ACL: |
529 |
|
container_of(ptr, struct env_acl_record, head)->is_deleted = 1; |
530 |
|
break; |
531 |
|
case TYPE_ENV_ACL_WITH_CONDITION: |
532 |
|
container_of(ptr, struct env_acl_record_with_condition, record.head)->record.is_deleted = 1; |
533 |
|
break; |
534 |
|
case TYPE_CAPABILITY_ACL: |
535 |
|
container_of(ptr, struct capability_acl_record, head)->is_deleted = 1; |
536 |
|
break; |
537 |
|
case TYPE_CAPABILITY_ACL_WITH_CONDITION: |
538 |
|
container_of(ptr, struct capability_acl_record_with_condition, record.head)->record.is_deleted = 1; |
539 |
|
break; |
540 |
|
case TYPE_IP_NETWORK_ACL: |
541 |
|
container_of(ptr, struct ip_network_acl_record, head)->is_deleted = 1; |
542 |
|
break; |
543 |
|
case TYPE_IP_NETWORK_ACL_WITH_CONDITION: |
544 |
|
container_of(ptr, struct ip_network_acl_record_with_condition, record.head)->record.is_deleted = 1; |
545 |
|
break; |
546 |
|
case TYPE_SIGNAL_ACL: |
547 |
|
container_of(ptr, struct signal_acl_record, head)->is_deleted = 1; |
548 |
|
break; |
549 |
|
case TYPE_SIGNAL_ACL_WITH_CONDITION: |
550 |
|
container_of(ptr, struct signal_acl_record_with_condition, record.head)->record.is_deleted = 1; |
551 |
|
break; |
552 |
|
} |
553 |
|
} |
554 |
domain->profile = profile; |
domain->profile = profile; |
555 |
domain->quota_warned = 0; |
domain->quota_warned = 0; |
556 |
mb(); /* Avoid out-of-order execution. */ |
mb(); /* Avoid out-of-order execution. */ |