@@ -959,6 +959,7 @@ static int init_act_open(struct cxgbi_sock *csk)
959
959
struct net_device * ndev = cdev -> ports [csk -> port_id ];
960
960
struct cxgbi_hba * chba = cdev -> hbas [csk -> port_id ];
961
961
struct sk_buff * skb = NULL ;
962
+ int ret ;
962
963
963
964
log_debug (1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK ,
964
965
"csk 0x%p,%u,0x%lx.\n" , csk , csk -> state , csk -> flags );
@@ -979,16 +980,16 @@ static int init_act_open(struct cxgbi_sock *csk)
979
980
csk -> atid = cxgb3_alloc_atid (t3dev , & t3_client , csk );
980
981
if (csk -> atid < 0 ) {
981
982
pr_err ("NO atid available.\n" );
982
- return - EINVAL ;
983
+ ret = - EINVAL ;
984
+ goto put_sock ;
983
985
}
984
986
cxgbi_sock_set_flag (csk , CTPF_HAS_ATID );
985
987
cxgbi_sock_get (csk );
986
988
987
989
skb = alloc_wr (sizeof (struct cpl_act_open_req ), 0 , GFP_KERNEL );
988
990
if (!skb ) {
989
- cxgb3_free_atid (t3dev , csk -> atid );
990
- cxgbi_sock_put (csk );
991
- return - ENOMEM ;
991
+ ret = - ENOMEM ;
992
+ goto free_atid ;
992
993
}
993
994
skb -> sk = (struct sock * )csk ;
994
995
set_arp_failure_handler (skb , act_open_arp_failure );
@@ -1010,6 +1011,15 @@ static int init_act_open(struct cxgbi_sock *csk)
1010
1011
cxgbi_sock_set_state (csk , CTP_ACTIVE_OPEN );
1011
1012
send_act_open_req (csk , skb , csk -> l2t );
1012
1013
return 0 ;
1014
+
1015
+ free_atid :
1016
+ cxgb3_free_atid (t3dev , csk -> atid );
1017
+ put_sock :
1018
+ cxgbi_sock_put (csk );
1019
+ l2t_release (t3dev , csk -> l2t );
1020
+ csk -> l2t = NULL ;
1021
+
1022
+ return ret ;
1013
1023
}
1014
1024
1015
1025
cxgb3_cpl_handler_func cxgb3i_cpl_handlers [NUM_CPL_CMDS ] = {
0 commit comments