ia64/xen-unstable
changeset 14031:c57d80520e7a
acm: More fixes after grant-table changes. These are all bugs
introduced during merge of Isaku's previous patch. :-)
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
introduced during merge of Isaku's previous patch. :-)
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author | kfraser@localhost.localdomain |
---|---|
date | Tue Feb 20 16:12:02 2007 +0000 (2007-02-20) |
parents | 92a4aafb8cbc |
children | b5ee25f50861 |
files | xen/acm/acm_simple_type_enforcement_hooks.c |
line diff
1.1 --- a/xen/acm/acm_simple_type_enforcement_hooks.c Tue Feb 20 15:37:28 2007 +0000 1.2 +++ b/xen/acm/acm_simple_type_enforcement_hooks.c Tue Feb 20 16:12:02 2007 +0000 1.3 @@ -235,7 +235,7 @@ ste_init_state(struct acm_ste_policy_buf 1.4 } 1.5 /* b) check for grant table conflicts on shared pages */ 1.6 spin_lock(&(*pd)->grant_table->lock); 1.7 - for ( i = 0; i < nr_grant_frames((*pd)->grant_table); i++ ) { 1.8 + for ( i = 0; i < nr_grant_entries((*pd)->grant_table); i++ ) { 1.9 #define SPP (PAGE_SIZE / sizeof(struct grant_entry)) 1.10 sha_copy = (*pd)->grant_table->shared[i/SPP][i%SPP]; 1.11 if ( sha_copy.flags ) { 1.12 @@ -244,8 +244,9 @@ ste_init_state(struct acm_ste_policy_buf 1.13 (unsigned long)sha_copy.frame); 1.14 rdomid = sha_copy.domid; 1.15 if ((rdom = get_domain_by_id(rdomid)) == NULL) { 1.16 + spin_unlock(&(*pd)->grant_table->lock); 1.17 printkd("%s: domain not found ERROR!\n", __func__); 1.18 - goto out_gnttab; 1.19 + goto out; 1.20 }; 1.21 /* rdom now has remote domain */ 1.22 ste_rssid = GET_SSIDP(ACM_SIMPLE_TYPE_ENFORCEMENT_POLICY, 1.23 @@ -253,16 +254,16 @@ ste_init_state(struct acm_ste_policy_buf 1.24 ste_rssidref = ste_rssid->ste_ssidref; 1.25 put_domain(rdom); 1.26 if (!have_common_type(ste_ssidref, ste_rssidref)) { 1.27 + spin_unlock(&(*pd)->grant_table->lock); 1.28 printkd("%s: Policy violation in grant table sharing domain %x -> domain %x.\n", 1.29 __func__, (*pd)->domain_id, rdomid); 1.30 - goto out_gnttab; 1.31 + goto out; 1.32 } 1.33 } 1.34 } 1.35 + spin_unlock(&(*pd)->grant_table->lock); 1.36 } 1.37 violation = 0; 1.38 - out_gnttab: 1.39 - spin_unlock(&(*pd)->grant_table->lock); 1.40 out: 1.41 read_unlock(&domlist_lock); 1.42 return violation;