summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-05-01 00:55:44 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2018-07-24 22:09:54 +1000
commitbd90284cc6c1c9e8e48c8eadd0c79574fcce0b81 (patch)
treeac70869f8ae7993b873bc63c240f0147a774abca
parentb29336c0e1785a28bc40a9fd47c2321671e9792e (diff)
downloadlinux-stable-bd90284cc6c1c9e8e48c8eadd0c79574fcce0b81.tar.gz
linux-stable-bd90284cc6c1c9e8e48c8eadd0c79574fcce0b81.tar.bz2
linux-stable-bd90284cc6c1c9e8e48c8eadd0c79574fcce0b81.zip
powerpc/powernv: opal_put_chars partial write fix
The intention here is to consume and discard the remaining buffer upon error. This works if there has not been a previous partial write. If there has been, then total_len is no longer total number of bytes to copy. total_len is always "bytes left to copy", so it should be added to written bytes. This code may not be exercised any more if partial writes will not be hit, but this is a small bugfix before a larger change. Reviewed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/platforms/powernv/opal.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 0d539c661748..371e33ecc547 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -388,7 +388,7 @@ int opal_put_chars(uint32_t vtermno, const char *data, int total_len)
/* Closed or other error drop */
if (rc != OPAL_SUCCESS && rc != OPAL_BUSY &&
rc != OPAL_BUSY_EVENT) {
- written = total_len;
+ written += total_len;
break;
}
if (rc == OPAL_SUCCESS) {