From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] check for KVM_GET/SET_REG ioctl failures Date: Tue, 06 Feb 2007 13:26:56 -0600 Message-ID: <45C8D680.3020704@us.ibm.com> References: <20070206184639.GA4292@rhun.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Muli Ben-Yehuda Return-path: In-Reply-To: <20070206184639.GA4292-k73YwwB0fHlWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Muli Ben-Yehuda wrote: > check for KVM_GET/SET_REGS ioctl failures > > Signed-off-by: Muli Ben-Yehuda > > diff -r ee6f88782b5f -r 9a3e101daf18 user/kvmctl.c > --- a/user/kvmctl.c Tue Feb 06 10:55:17 2007 +0000 > +++ b/user/kvmctl.c Tue Feb 06 17:05:56 2007 +0200 > @@ -235,19 +235,23 @@ static int handle_io(kvm_context_t kvm, > int delta; > struct translation_cache tr; > int _in = (run->io.direction == KVM_EXIT_IO_IN); > + int r; > > translation_cache_init(&tr); > > if (run->io.string || _in) { > regs.vcpu = run->vcpu; > - ioctl(kvm->fd, KVM_GET_REGS, ®s); > + r = ioctl(kvm->fd, KVM_GET_REGS, ®s); > + if (r == -1) { > + perror("KVM_GET_REGS"); > + exit(1); > Please don't add exit()'s to a library, these are the sort of things we should be trying to remove. In the very least, you should probably expect to see EINTRs. Regards, Anthony Liguori > + } > } > > delta = run->io.string_down ? -run->io.size : run->io.size; > > while (more_io(run, first_time)) { > void *value_addr; > - int r; > > if (!run->io.string) { > if (_in) > @@ -327,13 +331,25 @@ static int handle_io(kvm_context_t kvm, > } > first_time = 0; > if (r) { > - ioctl(kvm->fd, KVM_SET_REGS, ®s); > - return r; > - } > - } > - > - if (run->io.string || _in) > - ioctl(kvm->fd, KVM_SET_REGS, ®s); > + int savedret = r; > + r = ioctl(kvm->fd, KVM_SET_REGS, ®s); > + if (r == -1) { > + perror("KVM_SET_REGS"); > + exit(1); > + } > + > + return savedret; > + } > + } > + > + if (run->io.string || _in) { > + r = ioctl(kvm->fd, KVM_SET_REGS, ®s); > + if (r == -1) { > + perror("KVM_SET_REGS"); > + exit(1); > + } > + } > + > run->emulated = 1; > return 0; > } > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > kvm-devel mailing list > kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org > https://lists.sourceforge.net/lists/listinfo/kvm-devel > > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642