IB/core: Pass imm_data from ib_uverbs_send_wr to ib_send_wr correctly
authorLatchesar Ionkov <lucho@ionkov.net>
Sat, 19 Oct 2013 21:55:41 +0000 (15:55 -0600)
committerRoland Dreier <roland@purestorage.com>
Fri, 8 Nov 2013 22:42:54 +0000 (14:42 -0800)
Currently, we don't copy the immediate data from the userspace struct
to the kernel one when UD messages are being sent.

This patch makes sure that the immediate data is set correctly.

Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/core/uverbs_cmd.c

index 2f0f01b70e3bd22c538cd3a4081be0a9ec3f790f..5bb2a82d52e7708b53aa1b9cbfe8e8fd1f0fbb22 100644 (file)
@@ -2128,6 +2128,9 @@ ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file,
                        }
                        next->wr.ud.remote_qpn  = user_wr->wr.ud.remote_qpn;
                        next->wr.ud.remote_qkey = user_wr->wr.ud.remote_qkey;
+                       if (next->opcode == IB_WR_SEND_WITH_IMM)
+                               next->ex.imm_data =
+                                       (__be32 __force) user_wr->ex.imm_data;
                } else {
                        switch (next->opcode) {
                        case IB_WR_RDMA_WRITE_WITH_IMM: