diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-05-17 07:58:08 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-05-17 07:58:08 +0200 |
commit | cffc32975da7df2ef909299c47ff644e1357e0ac (patch) | |
tree | 04cfa6276b890f49f686d65be7397c4232ac44af /net/rds/ib_cm.c | |
parent | 6dc178760553605c58d78bd403dfcb4e042c5b72 (diff) | |
parent | adeb5537849d9db428fe0ddc3562e5a765a347e2 (diff) | |
download | op-kernel-dev-cffc32975da7df2ef909299c47ff644e1357e0ac.zip op-kernel-dev-cffc32975da7df2ef909299c47ff644e1357e0ac.tar.gz |
Merge branch 'x86/asm' into x86/apic, to resolve conflicts
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/rds/ib_cm.c')
-rw-r--r-- | net/rds/ib_cm.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c index 31b74f5..8a09ee7 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c @@ -183,8 +183,17 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even /* If the peer gave us the last packet it saw, process this as if * we had received a regular ACK. */ - if (dp && dp->dp_ack_seq) - rds_send_drop_acked(conn, be64_to_cpu(dp->dp_ack_seq), NULL); + if (dp) { + /* dp structure start is not guaranteed to be 8 bytes aligned. + * Since dp_ack_seq is 64-bit extended load operations can be + * used so go through get_unaligned to avoid unaligned errors. + */ + __be64 dp_ack_seq = get_unaligned(&dp->dp_ack_seq); + + if (dp_ack_seq) + rds_send_drop_acked(conn, be64_to_cpu(dp_ack_seq), + NULL); + } rds_connect_complete(conn); } |