Commit a8deaef3 authored by Tim Sell's avatar Tim Sell Committed by Greg Kroah-Hartman

staging: unisys: visorbus: fix payload memory usage in controlvm channel

Previously if controlvm message payloads (indicated in controlvm message
via struct controlvm_message.hdr.payload_vm_offset) were contained within
the bounds of the channel memory, we would fail to process any controlvm
message that contained payload data.  Reason is, the request_mem_region()
would fail, because it overlapped the channel memory.  Since
request_mem_region() doesn't actually serve a functional purpose anyway,
this was simply removed.
Signed-off-by: default avatarTimothy Sell <timothy.sell@unisys.com>
Signed-off-by: default avatarDavid Kershner <david.kershner@unisys.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0af9ed31
...@@ -399,21 +399,13 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry) ...@@ -399,21 +399,13 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
p = __va((unsigned long)(addr)); p = __va((unsigned long)(addr));
memcpy(ctx->data, p, bytes); memcpy(ctx->data, p, bytes);
} else { } else {
void *mapping; void *mapping = memremap(addr, bytes, MEMREMAP_WB);
if (!request_mem_region(addr, bytes, "visorchipset")) {
rc = NULL;
goto cleanup;
}
mapping = memremap(addr, bytes, MEMREMAP_WB);
if (!mapping) { if (!mapping) {
release_mem_region(addr, bytes);
rc = NULL; rc = NULL;
goto cleanup; goto cleanup;
} }
memcpy(ctx->data, mapping, bytes); memcpy(ctx->data, mapping, bytes);
release_mem_region(addr, bytes);
memunmap(mapping); memunmap(mapping);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment