[sheepdog] [PATCH] bs_sheepdog.c: add missing initialization of read data length

Ryusuke Konishi konishi.ryusuke at lab.ntt.co.jp
Thu Dec 19 06:46:58 CET 2013


In the sheepdog driver, the read data length argument of do_req
function is not initialized by some caller functions such as
sd_sync(), sd_close(), and create_branch().

This patch adds those missing initializations to prevent uncertain
behavior in do_req() and fixes the following warning of valgrind:

 ==1885== Conditional jump or move depends on uninitialised value(s)
 ==1885==    at 0x425994: do_req (bs_sheepdog.c:598)
 ==1885==    by 0x426A06: bs_sheepdog_close (bs_sheepdog.c:1100)
 ==1885==    by 0x4142B4: tgt_device_destroy (target.c:705)
 ==1885==    by 0x412335: tgt_mgmt (mgmt.c:222)
 ==1885==    by 0x412776: mtask_handler (mgmt.c:494)
 ==1885==    by 0x4106A8: event_loop (tgtd.c:411)
 ==1885==    by 0x410D64: main (tgtd.c:583)

Signed-off-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
Cc: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
---
 usr/bs_sheepdog.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/usr/bs_sheepdog.c b/usr/bs_sheepdog.c
index 07ad0de..f11b693 100644
--- a/usr/bs_sheepdog.c
+++ b/usr/bs_sheepdog.c
@@ -708,7 +708,7 @@ static int sd_sync(struct sheepdog_access_info *ai)
 	int ret;
 	struct sheepdog_obj_req hdr;
 	struct sheepdog_obj_rsp *rsp = (struct sheepdog_obj_rsp *)&hdr;
-	unsigned int wlen = 0, rlen;
+	unsigned int wlen = 0, rlen = 0;
 
 	memset(&hdr, 0, sizeof(hdr));
 
@@ -1087,7 +1087,7 @@ static void sd_close(struct sheepdog_access_info *ai)
 {
 	struct sheepdog_vdi_req hdr;
 	struct sheepdog_vdi_rsp *rsp = (struct sheepdog_vdi_rsp *)&hdr;
-	unsigned int wlen = 0, rlen;
+	unsigned int wlen = 0, rlen = 0;
 	int ret;
 
 	memset(&hdr, 0, sizeof(hdr));
@@ -1120,6 +1120,7 @@ static int create_branch(struct sheepdog_access_info *ai)
 	hdr.vdi_id = ai->inode.vdi_id;
 	hdr.flags = SD_FLAG_CMD_WRITE;
 	wlen = SD_MAX_VDI_LEN;
+	rlen = 0;
 	hdr.data_length = wlen;
 
 	ret = do_req(ai, (struct sheepdog_req *)&hdr, ai->inode.name,
@@ -1135,6 +1136,7 @@ static int create_branch(struct sheepdog_access_info *ai)
 
 	hdr.flags = SD_FLAG_CMD_WRITE;
 	wlen = SD_MAX_VDI_LEN;
+	rlen = 0;
 	hdr.data_length = wlen;
 	hdr.vdi_size = ai->inode.vdi_size;
 	ret = do_req(ai, (struct sheepdog_req *)&hdr, ai->inode.name,
-- 
1.7.9.3




More information about the sheepdog mailing list