[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] Re: [PATCH] fix sal emulation.
Hi Isaku, Sounds good. Best regards, Kan and Kaz Tue, 13 May 2008 17:49:55 +0900, Isaku Yamahata wrote: >[IA64] fix sal emulation. > >fix sal emulation, SAL_SET_VECTORS, SAL_MC_SET_PARAMS. >It allowed any domains to change system wide state. But only >dom0 is able to change it. > >Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> > >diff -r dfe378c657e0 xen/arch/ia64/xen/fw_emul.c >--- a/xen/arch/ia64/xen/fw_emul.c Fri May 09 17:50:37 2008 +0900 >+++ b/xen/arch/ia64/xen/fw_emul.c Tue May 13 17:30:18 2008 +0900 >@@ -200,10 +200,15 @@ > d->arch.sal_data->boot_rdv_r1 = in3; > } > } >- else >- { >- if (in1 > sizeof(sal_vectors)/sizeof(sal_vectors[0])-1) >- BUG(); >+ else if (current->domain == dom0){ >+ if (in1 > >+ sizeof(sal_vectors)/sizeof(sal_vectors[0])-1) { >+ gdprintk(XENLOG_DEBUG, >+ "SAL_SET_VECTORS invalid in1 %ld\n", >+ in1); >+ status = -2; >+ break; >+ } > sal_vectors[in1].vector_type = in1; > sal_vectors[in1].handler_addr1 = in2; > sal_vectors[in1].gp1 = in3; >@@ -211,6 +216,10 @@ > sal_vectors[in1].handler_addr2 = in5; > sal_vectors[in1].gp2 = in6; > sal_vectors[in1].handler_len2 = in7; >+ } else { >+ gdprintk(XENLOG_DEBUG, "NON-PRIV DOMAIN CALLED " >+ "SAL_SET_VECTORS %ld\n", in1); >+ status = -2; > } > break; > case SAL_GET_STATE_INFO: >@@ -352,13 +361,25 @@ > printk("*** CALLED SAL_MC_RENDEZ. IGNORED...\n"); > break; > case SAL_MC_SET_PARAMS: >- if (in1 > sizeof(sal_mc_params)/sizeof(sal_mc_params[0])) >- BUG(); >- sal_mc_params[in1].param_type = in1; >- sal_mc_params[in1].i_or_m = in2; >- sal_mc_params[in1].i_or_m_val = in3; >- sal_mc_params[in1].timeout = in4; >- sal_mc_params[in1].rz_always = in5; >+ if (current->domain == dom0) { >+ if (in1 > >+ sizeof(sal_mc_params) / sizeof(sal_mc_params[0])) { >+ gdprintk(XENLOG_DEBUG, >+ "SAL_MC_SET_PARAMS invalid in1 %ld\n", >+ in1); >+ status = -2; >+ break; >+ } >+ sal_mc_params[in1].param_type = in1; >+ sal_mc_params[in1].i_or_m = in2; >+ sal_mc_params[in1].i_or_m_val = in3; >+ sal_mc_params[in1].timeout = in4; >+ sal_mc_params[in1].rz_always = in5; >+ } else { >+ gdprintk(XENLOG_DEBUG, >+ "*** CALLED SAL_MC_SET_PARAMS. IGNORED...\n"); >+ status = -1; /* not implemented */ >+ } > break; > case SAL_CACHE_FLUSH: > if (1) { > > > > > >-- >yamahata _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |