On Tue, Feb 02, 2010 at 09:49:35PM +0900, Takuya Yoshikawa wrote: > A bit more explanation, > > Takuya Yoshikawa wrote: > >This patch fixes load_guest_segment_descriptor() to return > >X86EMUL_PROPAGATE_FAULT when it tries to access the descriptor > >table beyond the limit of it: suggested by Marcelo. > > > >I have checked current callers of this helper function, > > - kvm_load_segment_descriptor() > > - kvm_task_switch() > >and confirmed that this patch will change nothing in the > >upper layers if we do not change the handling of this > >return value from load_guest_segment_descriptor(). > > > >Next step: Although fixing the kvm_task_switch() to handle the > >propagated faults properly seems difficult, and maybe not worth > >it because TSS is not used commonly these days, we can fix > >kvm_load_segment_descriptor(). By doing so, the injected #GP > >becomes possible to be handled by the guest. The only problem > >for this is how to differentiate this fault from the page faults > >generated by kvm_read_guest_virt(). We may have to split this > >function to achive this goal. > > > > My concern is we may have to inject different types of > faults/exceptions depending on callers when kvm_read_guest_virt() > returns X86EMUL_PROPAGATE_FAULT. Actually if always injecting > page faults in the load_guest_segment_descriptor() right after > kvm_read_guest_virt() is OK, we do not have any problems. > > Personally I think we'd better to inject page faults for > kvm_load_segment_descriptor(). > > Is it right? Yes, if kvm_read_guest_virt fails, inject page fault. Applied patch, thanks. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html