3.2.89-rc1 review patch. If anyone has any objections, please let me know.
------------------ From: Feras Daoud <fera...@mellanox.com> commit 80b5b35aba62232521b31440f0a3cf6caa033849 upstream. When changing the connection mode, the ipoib_set_mode function did not check if the previous connection mode equals to the new one. This commit adds the required check and return 0 if the new mode equals to the previous one. Fixes: 839fcaba355a ("IPoIB: Connected mode experimental support") Signed-off-by: Feras Daoud <fera...@mellanox.com> Signed-off-by: Erez Shitrit <ere...@mellanox.com> Reviewed-by: Alex Vesker <va...@mellanox.com> Reviewed-by: Yuval Shaia <yuval.sh...@oracle.com> Signed-off-by: Leon Romanovsky <l...@kernel.org> Signed-off-by: Doug Ledford <dledf...@redhat.com> [bwh: Backported to 3.2: - Adjust filename - Unlock RTNL lock before returning] Signed-off-by: Ben Hutchings <b...@decadent.org.uk> --- --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -1480,6 +1480,14 @@ static ssize_t set_mode(struct device *d if (!rtnl_trylock()) return restart_syscall(); + if ((test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) && + !strcmp(buf, "connected\n")) || + (!test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) && + !strcmp(buf, "datagram\n"))) { + rtnl_unlock(); + return 0; + } + /* flush paths if we switch modes so that connections are restarted */ if (IPOIB_CM_SUPPORTED(dev->dev_addr) && !strcmp(buf, "connected\n")) { set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);