File tree Expand file tree Collapse file tree 1 file changed +15
-8
lines changed Expand file tree Collapse file tree 1 file changed +15
-8
lines changed Original file line number Diff line number Diff line change @@ -1762,22 +1762,29 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
1762
1762
1763
1763
if (!cma_any_addr (addr )) {
1764
1764
ret = rdma_translate_ip (addr , & id -> route .addr .dev_addr );
1765
- if (!ret ) {
1766
- mutex_lock (& lock );
1767
- ret = cma_acquire_dev (id_priv );
1768
- mutex_unlock (& lock );
1769
- }
1770
1765
if (ret )
1771
- goto err ;
1766
+ goto err1 ;
1767
+
1768
+ mutex_lock (& lock );
1769
+ ret = cma_acquire_dev (id_priv );
1770
+ mutex_unlock (& lock );
1771
+ if (ret )
1772
+ goto err1 ;
1772
1773
}
1773
1774
1774
1775
memcpy (& id -> route .addr .src_addr , addr , ip_addr_size (addr ));
1775
1776
ret = cma_get_port (id_priv );
1776
1777
if (ret )
1777
- goto err ;
1778
+ goto err2 ;
1778
1779
1779
1780
return 0 ;
1780
- err :
1781
+ err2 :
1782
+ if (!cma_any_addr (addr )) {
1783
+ mutex_lock (& lock );
1784
+ cma_detach_from_dev (id_priv );
1785
+ mutex_unlock (& lock );
1786
+ }
1787
+ err1 :
1781
1788
cma_comp_exch (id_priv , CMA_ADDR_BOUND , CMA_IDLE );
1782
1789
return ret ;
1783
1790
}
You can’t perform that action at this time.
0 commit comments