[stgt] Strange sendtargets behaviour
    FUJITA Tomonori 
    fujita.tomonori at lab.ntt.co.jp
       
    Tue Sep 15 05:32:45 CEST 2009
    
    
  
On Mon, 14 Sep 2009 18:44:54 +0100
Chris Webb <chris at arachsys.com> wrote:
> In case you have problems reproducing this one, the following script run
> straight after boot is sufficient for me, with nothing else running except
> for iscsid so open-iscsi can run:
Thanks a lot for the useful information!
I can reproduce this problem and I think that I found the root
cause. It's not about overrun buffer but tgtd sends a wrong buffer to
initiators.
When text_key_add() realloc conn->rsp_buffer for a long text response,
we need to set conn->rsp.data again (otherwise conn->rsp.data points
to a wrong memory including garbage and sends it later).
I'll add multiple text PDU support later but can you test this minimum
fix?
diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c
index 79c6e2d..114c680 100644
--- a/usr/iscsi/iscsid.c
+++ b/usr/iscsi/iscsid.c
@@ -173,9 +173,10 @@ void text_key_add(struct iscsi_connection *conn, char *key, char *value)
 
 	if (conn->rsp.datasize + len > INCOMING_BUFSIZE) {
 		buffer = realloc(buffer, conn->rsp.datasize + len);
-		if (buffer)
+		if (buffer) {
 			conn->rsp_buffer = buffer;
-		else
+			conn->rsp.data = conn->rsp_buffer;
+		} else
 			goto drop;
 	}
 
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
    
    
More information about the stgt
mailing list