2013-03-07 15:33:21

by Andy King

[permalink] [raw]
Subject: [PATCH] VMCI: Fix process-to-process DRGAMs.

When sending between processes, we always schedule a work item. Our work info
struct has the message embedded in the middle, which means that we end up
overwriting subsequent fields when we copy the (variable-length) message into
it. Move it to the end of the struct.

Acked-by: Dmitry Torokhov <[email protected]>
Signed-off-by: Andy King <[email protected]>
---
drivers/misc/vmw_vmci/vmci_datagram.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/misc/vmw_vmci/vmci_datagram.c b/drivers/misc/vmw_vmci/vmci_datagram.c
index ed5c433..f3cdd90 100644
--- a/drivers/misc/vmw_vmci/vmci_datagram.c
+++ b/drivers/misc/vmw_vmci/vmci_datagram.c
@@ -42,9 +42,11 @@ struct datagram_entry {

struct delayed_datagram_info {
struct datagram_entry *entry;
- struct vmci_datagram msg;
struct work_struct work;
bool in_dg_host_queue;
+ /* msg and msg_payload must be together. */
+ struct vmci_datagram msg;
+ u8 msg_payload[];
};

/* Number of in-flight host->host datagrams */
--
1.7.4.1