[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; + } } _