オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Diff of /branches/ccs-patch/fs/tomoyo_domain.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1695 by kumaneko, Sat Oct 11 08:46:59 2008 UTC revision 1697 by kumaneko, Sun Oct 12 02:27:07 2008 UTC
# Line 38  LIST1_HEAD(domain_list); Line 38  LIST1_HEAD(domain_list);
38  #ifdef CONFIG_TOMOYO  #ifdef CONFIG_TOMOYO
39    
40  /* Domain creation lock. */  /* Domain creation lock. */
41  static DEFINE_MUTEX(new_domain_assign_lock);  static DEFINE_MUTEX(domain_list_lock);
42    
43  /* Structure for "initialize_domain" and "no_initialize_domain" keyword. */  /* Structure for "initialize_domain" and "no_initialize_domain" keyword. */
44  struct domain_initializer_entry {  struct domain_initializer_entry {
# Line 88  struct alias_entry { Line 88  struct alias_entry {
88  void ccs_set_domain_flag(struct domain_info *domain, const bool is_delete,  void ccs_set_domain_flag(struct domain_info *domain, const bool is_delete,
89                           const u8 flags)                           const u8 flags)
90  {  {
91          mutex_lock(&new_domain_assign_lock);          mutex_lock(&domain_list_lock);
92          if (!is_delete)          if (!is_delete)
93                  domain->flags |= flags;                  domain->flags |= flags;
94          else          else
95                  domain->flags &= ~flags;                  domain->flags &= ~flags;
96          mutex_unlock(&new_domain_assign_lock);          mutex_unlock(&domain_list_lock);
97  }  }
98    
99  /**  /**
# Line 717  int ccs_delete_domain(char *domainname) Line 717  int ccs_delete_domain(char *domainname)
717          struct path_info name;          struct path_info name;
718          name.name = domainname;          name.name = domainname;
719          ccs_fill_path_info(&name);          ccs_fill_path_info(&name);
720          mutex_lock(&new_domain_assign_lock);          mutex_lock(&domain_list_lock);
721  #ifdef DEBUG_DOMAIN_UNDELETE  #ifdef DEBUG_DOMAIN_UNDELETE
722          printk(KERN_DEBUG "ccs_delete_domain %s\n", domainname);          printk(KERN_DEBUG "ccs_delete_domain %s\n", domainname);
723          list1_for_each_entry(domain, &domain_list, list) {          list1_for_each_entry(domain, &domain_list, list) {
# Line 755  int ccs_delete_domain(char *domainname) Line 755  int ccs_delete_domain(char *domainname)
755  #endif  #endif
756                  break;                  break;
757          }          }
758          mutex_unlock(&new_domain_assign_lock);          mutex_unlock(&domain_list_lock);
759          return 0;          return 0;
760  }  }
761    
# Line 773  struct domain_info *ccs_undelete_domain( Line 773  struct domain_info *ccs_undelete_domain(
773          struct path_info name;          struct path_info name;
774          name.name = domainname;          name.name = domainname;
775          ccs_fill_path_info(&name);          ccs_fill_path_info(&name);
776          mutex_lock(&new_domain_assign_lock);          mutex_lock(&domain_list_lock);
777  #ifdef DEBUG_DOMAIN_UNDELETE  #ifdef DEBUG_DOMAIN_UNDELETE
778          printk(KERN_DEBUG "ccs_undelete_domain %s\n", domainname);          printk(KERN_DEBUG "ccs_undelete_domain %s\n", domainname);
779          list1_for_each_entry(domain, &domain_list, list) {          list1_for_each_entry(domain, &domain_list, list) {
# Line 804  struct domain_info *ccs_undelete_domain( Line 804  struct domain_info *ccs_undelete_domain(
804                  printk(KERN_DEBUG "%p was undeleted.\n", candidate_domain);                  printk(KERN_DEBUG "%p was undeleted.\n", candidate_domain);
805  #endif  #endif
806          }          }
807          mutex_unlock(&new_domain_assign_lock);          mutex_unlock(&domain_list_lock);
808          return candidate_domain;          return candidate_domain;
809  }  }
810    
# Line 821  struct domain_info *ccs_find_or_assign_n Line 821  struct domain_info *ccs_find_or_assign_n
821  {  {
822          struct domain_info *domain = NULL;          struct domain_info *domain = NULL;
823          const struct path_info *saved_domainname;          const struct path_info *saved_domainname;
824          mutex_lock(&new_domain_assign_lock);          mutex_lock(&domain_list_lock);
825          domain = ccs_find_domain(domainname);          domain = ccs_find_domain(domainname);
826          if (domain)          if (domain)
827                  goto out;                  goto out;
# Line 860  struct domain_info *ccs_find_or_assign_n Line 860  struct domain_info *ccs_find_or_assign_n
860                  }                  }
861                  /*                  /*
862                   * Don't use ccs_set_domain_flag() because                   * Don't use ccs_set_domain_flag() because
863                   * new_domain_assign_lock is held.                   * domain_list_lock is held.
864                   */                   */
865                  domain->flags = 0;                  domain->flags = 0;
866                  domain->profile = profile;                  domain->profile = profile;
# Line 878  struct domain_info *ccs_find_or_assign_n Line 878  struct domain_info *ccs_find_or_assign_n
878                  list1_add_tail_mb(&domain->list, &domain_list);                  list1_add_tail_mb(&domain->list, &domain_list);
879          }          }
880   out:   out:
881          mutex_unlock(&new_domain_assign_lock);          mutex_unlock(&domain_list_lock);
882          return domain;          return domain;
883  }  }
884    

Legend:
Removed from v.1695  
changed lines
  Added in v.1697

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26