
[ppc64] HvCall_writeLogBuffer called with too large of a buffer


---

 arch/ppc64/kernel/HvCall.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff -puN arch/ppc64/kernel/HvCall.c~ppc64-writelogbuffer arch/ppc64/kernel/HvCall.c
--- 25/arch/ppc64/kernel/HvCall.c~ppc64-writelogbuffer	2004-01-13 23:21:54.000000000 -0800
+++ 25-akpm/arch/ppc64/kernel/HvCall.c	2004-01-13 23:21:54.000000000 -0800
@@ -90,11 +90,11 @@ void HvCall_writeLogBuffer(const void *b
 	struct HvLpBufferList bufList;
 	u64 bytesLeft = bufLen;
 	u64 leftThisPage;
-	u64 curPtr = virt_to_absolute( (unsigned long) buffer );
+	u64 curPtr = virt_to_absolute((unsigned long) buffer);
 
 	while (bytesLeft) {
 		bufList.addr = curPtr;
-      
+
 		leftThisPage = ((curPtr & PAGE_MASK) + PAGE_SIZE) - curPtr;
 
 		if (leftThisPage > bytesLeft) {
@@ -105,11 +105,11 @@ void HvCall_writeLogBuffer(const void *b
 			bytesLeft -= leftThisPage;
 		}
 
-		curPtr = (curPtr & PAGE_MASK) + PAGE_SIZE;
-	}
-
 
-	HvCall2(HvCallBaseWriteLogBuffer,
-		virt_to_absolute((unsigned long)&bufList), bufLen);
+		HvCall2(HvCallBaseWriteLogBuffer,
+			virt_to_absolute((unsigned long) &bufList),
+			bufList.len);
 
+		curPtr = (curPtr & PAGE_MASK) + PAGE_SIZE;
+	}
 }

_
