From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1Gfz-0006WA-ES for qemu-devel@nongnu.org; Tue, 14 Aug 2012 08:56:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T1Gft-0005ph-Qc for qemu-devel@nongnu.org; Tue, 14 Aug 2012 08:56:51 -0400 Received: from e06smtp16.uk.ibm.com ([195.75.94.112]:38420) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1Gft-0005pF-HS for qemu-devel@nongnu.org; Tue, 14 Aug 2012 08:56:45 -0400 Received: from /spool/local by e06smtp16.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 14 Aug 2012 13:56:44 +0100 Received: from d06av10.portsmouth.uk.ibm.com (d06av10.portsmouth.uk.ibm.com [9.149.37.251]) by b06cxnps4075.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q7ECuYGn13172850 for ; Tue, 14 Aug 2012 12:56:34 GMT Received: from d06av10.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av10.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q7ECRxY2015422 for ; Tue, 14 Aug 2012 08:27:59 -0400 From: Stefan Hajnoczi Date: Tue, 14 Aug 2012 13:56:26 +0100 Message-Id: <1344948988-8627-5-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1344948988-8627-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1344948988-8627-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 4/6] trace: avoid pointer aliasing in trace_record_finish() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Harsh Prateek Bora , qemu-devel@nongnu.org, Stefan Hajnoczi From: Harsh Prateek Bora Declaring a TraceRecord on the stack works fine. No need for a uint8_t array and pointer aliasing. Signed-off-by: Harsh Prateek Bora Signed-off-by: Stefan Hajnoczi --- trace/simple.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/trace/simple.c b/trace/simple.c index 4fed07f..8e175ec 100644 --- a/trace/simple.c +++ b/trace/simple.c @@ -269,12 +269,11 @@ static unsigned int write_to_buffer(unsigned int idx, void *dataptr, size_t size void trace_record_finish(TraceBufferRecord *rec) { - uint8_t temp_rec[sizeof(TraceRecord)]; - TraceRecord *record = (TraceRecord *) temp_rec; - read_from_buffer(rec->tbuf_idx, temp_rec, sizeof(TraceRecord)); + TraceRecord record; + read_from_buffer(rec->tbuf_idx, &record, sizeof(TraceRecord)); smp_wmb(); /* write barrier before marking as valid */ - record->event |= TRACE_RECORD_VALID; - write_to_buffer(rec->tbuf_idx, temp_rec, sizeof(TraceRecord)); + record.event |= TRACE_RECORD_VALID; + write_to_buffer(rec->tbuf_idx, &record, sizeof(TraceRecord)); if ((trace_idx - writeout_idx) > TRACE_BUF_FLUSH_THRESHOLD) { flush_trace_file(false); -- 1.7.10.4