diff options
| author | Andy King <acking@vmware.com> | 2013-03-07 10:29:08 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-03-15 15:58:12 -0400 |
| commit | 347e0899b1c75d907f01ac883ca38d37fe9bfa42 (patch) | |
| tree | 74b1b63235134845774d4f9b73952944fb271120 | |
| parent | 61ec7e77d724f3150338ecaa2d16d4379b7498b1 (diff) | |
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 <dtor@vmware.com>
Signed-off-by: Andy King <acking@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | 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 ed5c433cd493..f3cdd904fe4d 100644 --- a/drivers/misc/vmw_vmci/vmci_datagram.c +++ b/drivers/misc/vmw_vmci/vmci_datagram.c | |||
| @@ -42,9 +42,11 @@ struct datagram_entry { | |||
| 42 | 42 | ||
| 43 | struct delayed_datagram_info { | 43 | struct delayed_datagram_info { |
| 44 | struct datagram_entry *entry; | 44 | struct datagram_entry *entry; |
| 45 | struct vmci_datagram msg; | ||
| 46 | struct work_struct work; | 45 | struct work_struct work; |
| 47 | bool in_dg_host_queue; | 46 | bool in_dg_host_queue; |
| 47 | /* msg and msg_payload must be together. */ | ||
| 48 | struct vmci_datagram msg; | ||
| 49 | u8 msg_payload[]; | ||
| 48 | }; | 50 | }; |
| 49 | 51 | ||
| 50 | /* Number of in-flight host->host datagrams */ | 52 | /* Number of in-flight host->host datagrams */ |
