Skip to contentSkip to conversation

Recent changes (master)

PATCH Jens Axboe 1 participant 1 message Dec 17, 2015

lore
Share & tools
lore

Jens Axboe

author
#0 lore raw

The following changes since commit bc0fec0e12f19dd424f4bf83cfca89d434184c8d:

client/server: ensure we don't overrun memory for long option values (2015-12-15 21:02:51 -0700)

are available in the git repository at:

git://git.kernel.dk/fio.git master

for you to fetch changes up to dde7b2361bf5b052a9c5c727bb2b062c604c7d42:

gclient: don't free pdu on iolog return (2015-12-16 15:05:54 -0700)

----------------------------------------------------------------
Jens Axboe (4):
parse: fix segfault if posval option doesn't have a value
verify: dump failed header, if verification fails
client: fix double free of command on timeout
gclient: don't free pdu on iolog return

 client.c  | 7 +++----
 gclient.c | 1 -
 parse.c   | 2 ++
 verify.c  | 5 +++++
 4 files changed, 10 insertions(+), 5 deletions(-)

---

Diff of recent changes:

client.c +3 -4
index 637cd3f..f4b95d3 100644
@@ -1666,12 +1666,13 @@ static void request_client_etas(struct client_ops *ops)
 static int handle_cmd_timeout(struct fio_client *client,
 			      struct fio_net_cmd_reply *reply)
 {
+	flist_del(&reply->list);
+	free(reply);
+
 	if (reply->opcode != FIO_NET_CMD_SEND_ETA)
 		return 1;
 
 	log_info("client <%s>: timeout on SEND_ETA\n", client->hostname);
-	flist_del(&reply->list);
-	free(reply);
 
 	flist_del_init(&client->eta_list);
 	if (client->eta_in_flight) {
@@ -1706,8 +1707,6 @@ static int client_check_cmd_timeout(struct fio_client *client,
 
 		log_err("fio: client %s, timeout on cmd %s\n", client->hostname,
 						fio_server_op(reply->opcode));
-		flist_del(&reply->list);
-		free(reply);
 		ret = 1;
 	}
 
gclient.c +0 -1
index 17af38a..949ad42 100644
@@ -696,7 +696,6 @@ static void gfio_client_job_start(struct fio_client *client, struct fio_net_cmd
 static void gfio_client_iolog(struct fio_client *client, struct cmd_iolog_pdu *pdu)
 {
 	printf("got iolog: name=%s, type=%u, entries=%lu\n", pdu->name, pdu->log_type, (unsigned long) pdu->nr_samples);
-	free(pdu);
 }
 
 static void gfio_add_total_depths_tree(GtkListStore *model,
parse.c +2 -0
index df42e22..0ef00b8 100644
@@ -483,6 +483,8 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data,
 			if (!vp->ival || vp->ival[0] == '\0')
 				continue;
 			all_skipped = 0;
+			if (!ptr)
+				break;
 			if (!strncmp(vp->ival, ptr, str_match_len(vp, ptr))) {
 				ret = 0;
 				if (o->off1)
verify.c +5 -0
index 268c060..5d491d7 100644
@@ -780,6 +780,11 @@ err:
 	log_err(" at file %s offset %llu, length %u\n",
 		io_u->file->file_name,
 		io_u->offset + hdr_num * hdr_len, hdr_len);
+
+	if (td->o.verify_dump)
+		dump_buf(p, hdr_len, io_u->offset + hdr_num * hdr_len,
+				"hdr_fail", io_u->file);
+
 	return EILSEQ;
 }