mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 11:39:53 +00:00
nbd: avoid unaligned uint64_t store
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 <jsnow@redhat.com> [Changed to use st?_be_p everywhere. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e3dd68df52
commit
667ad26ff8
20
nbd/server.c
20
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");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user