Commit 27cfde79 authored by Michael Guralnik's avatar Michael Guralnik Committed by Leon Romanovsky

RDMA/cma: Fix arguments order in net device validation

Fix the order of source and destination addresses when resolving the
route between server and client to validate use of correct net device.

The reverse order we had so far didn't actually validate the net device
as the server would try to resolve the route to itself, thus always
getting the server's net device.

The issue was discovered when running cm applications on a single host
between 2 interfaces with same subnet and source based routing rules.
When resolving the reverse route the source based route rules were
ignored.

Fixes: f887f2ac ("IB/cma: Validate routing of incoming requests")
Link: https://lore.kernel.org/r/1c1ec2277a131d277ebcceec987fd338d35b775f.1661251872.git.leonro@nvidia.comSigned-off-by: default avatarMichael Guralnik <michaelgur@nvidia.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent ead54ced
...@@ -1841,8 +1841,8 @@ cma_ib_id_from_event(struct ib_cm_id *cm_id, ...@@ -1841,8 +1841,8 @@ cma_ib_id_from_event(struct ib_cm_id *cm_id,
} }
if (!validate_net_dev(*net_dev, if (!validate_net_dev(*net_dev,
(struct sockaddr *)&req->listen_addr_storage, (struct sockaddr *)&req->src_addr_storage,
(struct sockaddr *)&req->src_addr_storage)) { (struct sockaddr *)&req->listen_addr_storage)) {
id_priv = ERR_PTR(-EHOSTUNREACH); id_priv = ERR_PTR(-EHOSTUNREACH);
goto err; goto err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment