@@ -292,6 +292,15 @@ static void smc_copy_sock_settings_to_smc(struct smc_sock *smc)
292292 smc_copy_sock_settings (& smc -> sk , smc -> clcsock -> sk , SK_FLAGS_CLC_TO_SMC );
293293}
294294
295+ /* register a new rmb */
296+ static int smc_reg_rmb (struct smc_link * link , struct smc_buf_desc * rmb_desc )
297+ {
298+ /* register memory region for new rmb */
299+ if (smc_wr_reg_send (link , rmb_desc -> mr_rx [SMC_SINGLE_LINK ]))
300+ return - EFAULT ;
301+ return 0 ;
302+ }
303+
295304static int smc_clnt_conf_first_link (struct smc_sock * smc )
296305{
297306 struct smc_link_group * lgr = smc -> conn .lgr ;
@@ -321,9 +330,7 @@ static int smc_clnt_conf_first_link(struct smc_sock *smc)
321330
322331 smc_wr_remember_qp_attr (link );
323332
324- rc = smc_wr_reg_send (link ,
325- smc -> conn .rmb_desc -> mr_rx [SMC_SINGLE_LINK ]);
326- if (rc )
333+ if (smc_reg_rmb (link , smc -> conn .rmb_desc ))
327334 return SMC_CLC_DECL_INTERR ;
328335
329336 /* send CONFIRM LINK response over RoCE fabric */
@@ -473,13 +480,8 @@ static int smc_connect_rdma(struct smc_sock *smc)
473480 goto decline_rdma_unlock ;
474481 }
475482 } else {
476- struct smc_buf_desc * buf_desc = smc -> conn .rmb_desc ;
477-
478- if (!buf_desc -> reused ) {
479- /* register memory region for new rmb */
480- rc = smc_wr_reg_send (link ,
481- buf_desc -> mr_rx [SMC_SINGLE_LINK ]);
482- if (rc ) {
483+ if (!smc -> conn .rmb_desc -> reused ) {
484+ if (smc_reg_rmb (link , smc -> conn .rmb_desc )) {
483485 reason_code = SMC_CLC_DECL_INTERR ;
484486 goto decline_rdma_unlock ;
485487 }
@@ -719,9 +721,7 @@ static int smc_serv_conf_first_link(struct smc_sock *smc)
719721
720722 link = & lgr -> lnk [SMC_SINGLE_LINK ];
721723
722- rc = smc_wr_reg_send (link ,
723- smc -> conn .rmb_desc -> mr_rx [SMC_SINGLE_LINK ]);
724- if (rc )
724+ if (smc_reg_rmb (link , smc -> conn .rmb_desc ))
725725 return SMC_CLC_DECL_INTERR ;
726726
727727 /* send CONFIRM LINK request to client over the RoCE fabric */
@@ -854,13 +854,8 @@ static void smc_listen_work(struct work_struct *work)
854854 smc_rx_init (new_smc );
855855
856856 if (local_contact != SMC_FIRST_CONTACT ) {
857- struct smc_buf_desc * buf_desc = new_smc -> conn .rmb_desc ;
858-
859- if (!buf_desc -> reused ) {
860- /* register memory region for new rmb */
861- rc = smc_wr_reg_send (link ,
862- buf_desc -> mr_rx [SMC_SINGLE_LINK ]);
863- if (rc ) {
857+ if (!new_smc -> conn .rmb_desc -> reused ) {
858+ if (smc_reg_rmb (link , new_smc -> conn .rmb_desc )) {
864859 reason_code = SMC_CLC_DECL_INTERR ;
865860 goto decline_rdma_unlock ;
866861 }
0 commit comments