nbd: consistently use ssize_t

GCC (pedantically, but correctly) considers that a negative ssize_t may
become positive when casted to int.  This may cause uninitialized variable
warnings when a function returns such a negative ssize_t and is inlined.
Propagate ssize_t return types to avoid this.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2012-03-07 11:25:01 +01:00
parent dd3e8ac413
commit 94e7340b5d
2 changed files with 12 additions and 14 deletions

22
nbd.c
View File

@ -470,7 +470,7 @@ int nbd_client(int fd)
} }
#endif #endif
int nbd_send_request(int csock, struct nbd_request *request) ssize_t nbd_send_request(int csock, struct nbd_request *request)
{ {
uint8_t buf[4 + 4 + 8 + 8 + 4]; uint8_t buf[4 + 4 + 8 + 8 + 4];
@ -492,7 +492,7 @@ int nbd_send_request(int csock, struct nbd_request *request)
return 0; return 0;
} }
static int nbd_receive_request(int csock, struct nbd_request *request) static ssize_t nbd_receive_request(int csock, struct nbd_request *request)
{ {
uint8_t buf[4 + 4 + 8 + 8 + 4]; uint8_t buf[4 + 4 + 8 + 8 + 4];
uint32_t magic; uint32_t magic;
@ -529,13 +529,11 @@ static int nbd_receive_request(int csock, struct nbd_request *request)
return 0; return 0;
} }
int nbd_receive_reply(int csock, struct nbd_reply *reply) ssize_t nbd_receive_reply(int csock, struct nbd_reply *reply)
{ {
uint8_t buf[NBD_REPLY_SIZE]; uint8_t buf[NBD_REPLY_SIZE];
uint32_t magic; uint32_t magic;
memset(buf, 0xAA, sizeof(buf));
if (read_sync(csock, buf, sizeof(buf)) != sizeof(buf)) { if (read_sync(csock, buf, sizeof(buf)) != sizeof(buf)) {
LOG("read failed"); LOG("read failed");
errno = EINVAL; errno = EINVAL;
@ -564,7 +562,7 @@ int nbd_receive_reply(int csock, struct nbd_reply *reply)
return 0; return 0;
} }
static int nbd_send_reply(int csock, struct nbd_reply *reply) static ssize_t nbd_send_reply(int csock, struct nbd_reply *reply)
{ {
uint8_t buf[4 + 4 + 8]; uint8_t buf[4 + 4 + 8];
@ -702,12 +700,12 @@ static int nbd_can_read(void *opaque);
static void nbd_read(void *opaque); static void nbd_read(void *opaque);
static void nbd_restart_write(void *opaque); static void nbd_restart_write(void *opaque);
static int nbd_co_send_reply(NBDRequest *req, struct nbd_reply *reply, static ssize_t nbd_co_send_reply(NBDRequest *req, struct nbd_reply *reply,
int len) int len)
{ {
NBDClient *client = req->client; NBDClient *client = req->client;
int csock = client->sock; int csock = client->sock;
int rc, ret; ssize_t rc, ret;
qemu_co_mutex_lock(&client->send_lock); qemu_co_mutex_lock(&client->send_lock);
qemu_set_fd_handler2(csock, nbd_can_read, nbd_read, qemu_set_fd_handler2(csock, nbd_can_read, nbd_read,
@ -741,11 +739,11 @@ static int nbd_co_send_reply(NBDRequest *req, struct nbd_reply *reply,
return rc; return rc;
} }
static int nbd_co_receive_request(NBDRequest *req, struct nbd_request *request) static ssize_t nbd_co_receive_request(NBDRequest *req, struct nbd_request *request)
{ {
NBDClient *client = req->client; NBDClient *client = req->client;
int csock = client->sock; int csock = client->sock;
int rc; ssize_t rc;
client->recv_coroutine = qemu_coroutine_self(); client->recv_coroutine = qemu_coroutine_self();
if (nbd_receive_request(csock, request) == -1) { if (nbd_receive_request(csock, request) == -1) {
@ -792,7 +790,7 @@ static void nbd_trip(void *opaque)
NBDExport *exp = client->exp; NBDExport *exp = client->exp;
struct nbd_request request; struct nbd_request request;
struct nbd_reply reply; struct nbd_reply reply;
int ret; ssize_t ret;
TRACE("Reading request."); TRACE("Reading request.");

4
nbd.h
View File

@ -70,8 +70,8 @@ int unix_socket_incoming(const char *path);
int nbd_receive_negotiate(int csock, const char *name, uint32_t *flags, int nbd_receive_negotiate(int csock, const char *name, uint32_t *flags,
off_t *size, size_t *blocksize); off_t *size, size_t *blocksize);
int nbd_init(int fd, int csock, uint32_t flags, off_t size, size_t blocksize); int nbd_init(int fd, int csock, uint32_t flags, off_t size, size_t blocksize);
int nbd_send_request(int csock, struct nbd_request *request); ssize_t nbd_send_request(int csock, struct nbd_request *request);
int nbd_receive_reply(int csock, struct nbd_reply *reply); ssize_t nbd_receive_reply(int csock, struct nbd_reply *reply);
int nbd_client(int fd); int nbd_client(int fd);
int nbd_disconnect(int fd); int nbd_disconnect(int fd);