From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH] fs-backend: fix compile problems Date: Wed, 18 Mar 2009 12:03:05 +0000 Message-ID: <49C0E2F9.2090406@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org Hi all, this patch removes some unused variables and replaces read and write to the pipe with read_exact and write_exact (these two functions are implemented in libxc, that we have to link anyway). This allows fs-backed to be compiled with -D_FORTIFY_SOURCE=2, hence should fix the problems reported by Boris. Signed-off-by: Stefano Stabellini --- diff -r 9fc957e63f8d tools/fs-back/fs-backend.c --- a/tools/fs-back/fs-backend.c Tue Mar 17 15:40:25 2009 +0000 +++ b/tools/fs-back/fs-backend.c Wed Mar 18 12:00:10 2009 +0000 @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "sys-queue.h" #include "fs-backend.h" @@ -181,7 +182,6 @@ { struct fs_mount *mount; struct fs_export *export; - int evt_port; struct fsif_sring *sring; uint32_t dom_ids[MAX_RING_SIZE]; int i; @@ -335,12 +335,8 @@ } if (FD_ISSET(pipefds[0], &fds)) { struct fs_request *request; - int ret; - ret = read(pipefds[0], &request, sizeof(struct fs_request *)); - if (ret != sizeof(struct fs_request *)) { - fprintf(stderr, "read request failed\n"); - continue; - } + if (read_exact(pipefds[0], &request, sizeof(struct fs_request *)) < 0) + err(1, "read request failed\n"); handle_aio_event(request); } LIST_FOREACH(pointer, &mount_requests_head, entries) { @@ -379,7 +375,8 @@ { struct fs_request *request = (struct fs_request*) info->si_value.sival_ptr; int saved_errno = errno; - write(pipefds[1], &request, sizeof(struct fs_request *)); + if (write_exact(pipefds[1], &request, sizeof(struct fs_request *)) < 0) + err(1, "write request filed\n"); errno = saved_errno; } diff -r 9fc957e63f8d tools/fs-back/fs-ops.c --- a/tools/fs-back/fs-ops.c Tue Mar 17 15:40:25 2009 +0000 +++ b/tools/fs-back/fs-ops.c Wed Mar 18 12:00:10 2009 +0000 @@ -49,7 +49,6 @@ { char *file_name, full_path[BUFFER_SIZE]; int fd; - struct timeval tv1, tv2; RING_IDX rsp_idx; fsif_response_t *rsp; uint16_t req_id; @@ -127,7 +126,7 @@ static void dispatch_file_read(struct fs_mount *mount, struct fsif_request *req) { void *buf; - int fd, i, count; + int fd, count; uint16_t req_id; unsigned short priv_id; struct fs_request *priv_req; @@ -169,7 +168,6 @@ priv_req->aiocb.aio_sigevent.sigev_value.sival_ptr = priv_req; assert(aio_read(&priv_req->aiocb) >= 0); -out: /* We can advance the request consumer index, from here on, the request * should not be used (it may be overrinden by a response) */ mount->ring.req_cons++; @@ -198,7 +196,7 @@ static void dispatch_file_write(struct fs_mount *mount, struct fsif_request *req) { void *buf; - int fd, count, i; + int fd, count; uint16_t req_id; unsigned short priv_id; struct fs_request *priv_req; @@ -268,7 +266,6 @@ static void dispatch_stat(struct fs_mount *mount, struct fsif_request *req) { - struct fsif_stat_response *buf; struct stat stat; int fd, ret; uint16_t req_id;