From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43420) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSpDx-0003NL-0h for qemu-devel@nongnu.org; Mon, 08 Feb 2016 12:03:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aSpDv-0006m3-R6 for qemu-devel@nongnu.org; Mon, 08 Feb 2016 12:03:40 -0500 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]:35363) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSpDv-0006ld-Id for qemu-devel@nongnu.org; Mon, 08 Feb 2016 12:03:39 -0500 Received: by mail-wm0-x235.google.com with SMTP id c200so25246017wme.0 for ; Mon, 08 Feb 2016 09:03:39 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Mon, 8 Feb 2016 18:03:04 +0100 Message-Id: <1454950999-64128-14-git-send-email-pbonzini@redhat.com> In-Reply-To: <1454950999-64128-1-git-send-email-pbonzini@redhat.com> References: <1454950999-64128-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 13/28] nbd: avoid unaligned uint64_t store List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: John Snow From: John Snow cpu_to_be64w can't be used to make unaligned stores, but stq_be_p can. Also, the st?_be_p takes a void* so it is more clearly suited to the case where you're writing into a byte buffer. Use the st?_be_p family of functions everywhere in nbd/server.c. Signed-off-by: John Snow [Changed to use st?_be_p everywhere. - Paolo] Signed-off-by: Paolo Bonzini --- nbd/server.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/nbd/server.c b/nbd/server.c index 4313530..dc1d66f 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -417,12 +417,12 @@ static coroutine_fn int nbd_negotiate(NBDClientNewData *data) memcpy(buf, "NBDMAGIC", 8); if (client->exp) { assert ((client->exp->nbdflags & ~65535) == 0); - cpu_to_be64w((uint64_t*)(buf + 8), NBD_CLIENT_MAGIC); - cpu_to_be64w((uint64_t*)(buf + 16), client->exp->size); - cpu_to_be16w((uint16_t*)(buf + 26), client->exp->nbdflags | myflags); + stq_be_p(buf + 8, NBD_CLIENT_MAGIC); + stq_be_p(buf + 16, client->exp->size); + stw_be_p(buf + 26, client->exp->nbdflags | myflags); } else { - cpu_to_be64w((uint64_t*)(buf + 8), NBD_OPTS_MAGIC); - cpu_to_be16w((uint16_t *)(buf + 16), NBD_FLAG_FIXED_NEWSTYLE); + stq_be_p(buf + 8, NBD_OPTS_MAGIC); + stw_be_p(buf + 16, NBD_FLAG_FIXED_NEWSTYLE); } if (client->exp) { @@ -442,8 +442,8 @@ static coroutine_fn int nbd_negotiate(NBDClientNewData *data) } assert ((client->exp->nbdflags & ~65535) == 0); - cpu_to_be64w((uint64_t*)(buf + 18), client->exp->size); - cpu_to_be16w((uint16_t*)(buf + 26), client->exp->nbdflags | myflags); + stq_be_p(buf + 18, client->exp->size); + stw_be_p(buf + 26, client->exp->nbdflags | myflags); if (nbd_negotiate_write(csock, buf + 18, sizeof(buf) - 18) != sizeof(buf) - 18) { LOG("write failed"); @@ -528,9 +528,9 @@ static ssize_t nbd_send_reply(int csock, struct nbd_reply *reply) [ 4 .. 7] error (0 == no error) [ 7 .. 15] handle */ - cpu_to_be32w((uint32_t*)buf, NBD_REPLY_MAGIC); - cpu_to_be32w((uint32_t*)(buf + 4), reply->error); - cpu_to_be64w((uint64_t*)(buf + 8), reply->handle); + stl_be_p(buf, NBD_REPLY_MAGIC); + stl_be_p(buf + 4, reply->error); + stq_be_p(buf + 8, reply->handle); TRACE("Sending response to client"); -- 1.8.3.1