• shamir rabinovitch's avatar
    net/rds: fix unaligned memory access · c0adf54a
    shamir rabinovitch authored
    rdma_conn_param private data is copied using memcpy after headers such
    as cma_hdr (see cma_resolve_ib_udp as example). so the start of the
    private data is aligned to the end of the structure that come before. if
    this structure end with u32 the meaning is that the start of the private
    data will be 4 bytes aligned. structures that use u8/u16/u32/u64 are
    naturally aligned but in case the structure start is not 8 bytes aligned,
    all u64 members of this structure will not be aligned. to solve this issue
    we must use special macros that allow unaligned access to those
    unaligned members.
    
    Addresses the following kernel log seen when attempting to use RDMA:
    
    Kernel unaligned access at TPC[10507a88] rds_ib_cm_connect_complete+0x1bc/0x1e0 [rds_rdma]
    Acked-by: default avatarChien Yen <chien.yen@oracle.com>
    Signed-off-by: default avatarshamir rabinovitch <shamir.rabinovitch@oracle.com>
    [Minor tweaks for top of tree by:]
    Signed-off-by: default avatarDavid Ahern <david.ahern@oracle.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c0adf54a
ib_cm.c 23.5 KB