From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45523) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNQPV-0000HG-5z for qemu-devel@nongnu.org; Mon, 07 Nov 2011 09:42:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RNQPR-0007b7-3p for qemu-devel@nongnu.org; Mon, 07 Nov 2011 09:42:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52897) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RNQPQ-0007ax-Oz for qemu-devel@nongnu.org; Mon, 07 Nov 2011 09:42:49 -0500 Message-ID: <4EB7EE4B.50602@redhat.com> Date: Mon, 07 Nov 2011 15:42:19 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1320676574-19251-1-git-send-email-chouteau@adacore.com> In-Reply-To: <1320676574-19251-1-git-send-email-chouteau@adacore.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1.0] Replace WriteFileEx with WriteFile in qemu_create_pidfile List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabien Chouteau Cc: blauwirbel@gmail.com, weil@mail.berlios.de, aliguori@us.ibm.com, qemu-devel@nongnu.org, jan.kiszka@siemens.com On 11/07/2011 03:36 PM, Fabien Chouteau wrote: > The function that writes pidfile for win32 uses WriteFileEx which is an > asynchronous IO function. The arguments given to WriteFileEx are allocated on > the stack and one of them is "in out". When the IO operation is actually > executed the calling function has already returned, so the arguments are no > longer allocated or allocated to another frame. > > Signed-off-by: Fabien Chouteau > --- > os-win32.c | 7 ++++--- > 1 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/os-win32.c b/os-win32.c > index 7909401..8ad5fa1 100644 > --- a/os-win32.c > +++ b/os-win32.c > @@ -130,14 +130,15 @@ int qemu_create_pidfile(const char *filename) > memset(&overlap, 0, sizeof(overlap)); > > file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL, > - OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); > + OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); This is s/tab/space/, unrelated but fine. > if (file == INVALID_HANDLE_VALUE) { > return -1; > } > len = snprintf(buffer, sizeof(buffer), "%d\n", getpid()); > - ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len, > - &overlap, NULL); > + ret = WriteFile(file, (LPCVOID)buffer, (DWORD)len, > + NULL,&overlap); > + CloseHandle(file); > if (ret == 0) { > return -1; > } Reviewed-by: Paolo Bonzini Paolo