summaryrefslogtreecommitdiffstats
path: root/net/smc/af_smc.c
diff options
context:
space:
mode:
authorKarsten Graul <kgraul@linux.ibm.com>2018-05-03 17:57:38 +0200
committerDavid S. Miller <davem@davemloft.net>2018-05-03 14:47:31 -0400
commita6920d1d130c3de039be982eba42542d329dc64c (patch)
treeeb06c1cdb7a9867644730d86ab9e13e12be17b41 /net/smc/af_smc.c
parente63a5f8c19d7807823d68830ebe8cfbd4419ab13 (diff)
downloadop-kernel-dev-a6920d1d130c3de039be982eba42542d329dc64c.zip
op-kernel-dev-a6920d1d130c3de039be982eba42542d329dc64c.tar.gz
net/smc: handle unregistered buffers
When smc_wr_reg_send() fails then tag (regerr) the affected buffer and free it in smc_buf_unuse(). Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/af_smc.c')
-rw-r--r--net/smc/af_smc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index fdb2976..d03b8d2 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -296,8 +296,10 @@ static void smc_copy_sock_settings_to_smc(struct smc_sock *smc)
static int smc_reg_rmb(struct smc_link *link, struct smc_buf_desc *rmb_desc)
{
/* register memory region for new rmb */
- if (smc_wr_reg_send(link, rmb_desc->mr_rx[SMC_SINGLE_LINK]))
+ if (smc_wr_reg_send(link, rmb_desc->mr_rx[SMC_SINGLE_LINK])) {
+ rmb_desc->regerr = 1;
return -EFAULT;
+ }
return 0;
}
OpenPOWER on IntegriCloud