mirror of https://gitee.com/openkylin/linux.git
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: Timothy Sell <timothy.sell@unisys.com> Signed-off-by: David Kershner <david.kershner@unisys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0af9ed3125
commit
a8deaef370
|
@ -399,21 +399,13 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
|
|||
p = __va((unsigned long)(addr));
|
||||
memcpy(ctx->data, p, bytes);
|
||||
} 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) {
|
||||
release_mem_region(addr, bytes);
|
||||
rc = NULL;
|
||||
goto cleanup;
|
||||
}
|
||||
memcpy(ctx->data, mapping, bytes);
|
||||
release_mem_region(addr, bytes);
|
||||
memunmap(mapping);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue