| From foo@baz Sun May 27 17:33:38 CEST 2018 |
| From: Jack Morgenstein <jackm@dev.mellanox.co.il> |
| Date: Mon, 5 Mar 2018 20:09:45 +0200 |
| Subject: IB/mlx4: Fix corruption of RoCEv2 IPv4 GIDs |
| |
| From: Jack Morgenstein <jackm@dev.mellanox.co.il> |
| |
| [ Upstream commit 0077416a3d529baccbe07ab3242e8db541cfadf6 ] |
| |
| When using IPv4 addresses in RoCEv2, the GID format for the mapped |
| IPv4 address should be: ::ffff:<4-byte IPv4 address>. |
| |
| In the cited commit, IPv4 mapped IPV6 addresses had the 3 upper dwords |
| zeroed out by memset, which resulted in deleting the ffff field. |
| |
| However, since procedure ipv6_addr_v4mapped() already verifies that the |
| gid has format ::ffff:<ipv4 address>, no change is needed for the gid, |
| and the memset can simply be removed. |
| |
| Fixes: 7e57b85c444c ("IB/mlx4: Add support for setting RoCEv2 gids in hardware") |
| Reviewed-by: Moni Shoua <monis@mellanox.com> |
| Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> |
| Signed-off-by: Leon Romanovsky <leon@kernel.org> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/infiniband/hw/mlx4/main.c | 2 -- |
| 1 file changed, 2 deletions(-) |
| |
| --- a/drivers/infiniband/hw/mlx4/main.c |
| +++ b/drivers/infiniband/hw/mlx4/main.c |
| @@ -216,8 +216,6 @@ static int mlx4_ib_update_gids_v1_v2(str |
| gid_tbl[i].version = 2; |
| if (!ipv6_addr_v4mapped((struct in6_addr *)&gids[i].gid)) |
| gid_tbl[i].type = 1; |
| - else |
| - memset(&gid_tbl[i].gid, 0, 12); |
| } |
| } |
| |