Thread (2 messages) 2 messages, 2 authors, 2007-12-07

scatterwalk_map_and_copy may cause kernel oops

From: Joy Latten <hidden>
Date: 2007-12-06 06:26:58

In scatterwalk_map_and_copy(), sg_next(sg) is called, 
loop goes back to top and scatterwalk_start() gets called
again. When next sg is NULL, BUG_ON may occur in next call to
scatterwalk_start().

Please let me know if following patch takes
right approach to fix this.

regards,
Joy 

Signed-off-by: Joy Latten <redacted>


diff -urpN cryptodev-2.6.2/crypto/scatterwalk.c cryptodev-2.6.2.sandbox/crypto/scatterwalk.c
--- cryptodev-2.6.2/crypto/scatterwalk.c	2007-12-05 00:23:37.000000000 -0600
+++ cryptodev-2.6.2.sandbox/crypto/scatterwalk.c	2007-12-06 00:10:56.000000000 -0600
@@ -106,7 +106,7 @@ void scatterwalk_map_and_copy(void *buf,
 	struct scatter_walk walk;
 	unsigned int offset = 0;
 
-	for (;;) {
+	do {
 		scatterwalk_start(&walk, sg);
 
 		if (start < offset + sg->length)
@@ -114,7 +114,7 @@ void scatterwalk_map_and_copy(void *buf,
 
 		offset += sg->length;
 		sg = sg_next(sg);
-	}
+	} while (sg != NULL);
 
 	scatterwalk_advance(&walk, start - offset);
 	scatterwalk_copychunks(buf, &walk, nbytes, out);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help