diff options
author | Karsten Graul <kgraul@linux.ibm.com> | 2018-05-03 17:57:38 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-03 14:47:31 -0400 |
commit | a6920d1d130c3de039be982eba42542d329dc64c (patch) | |
tree | eb06c1cdb7a9867644730d86ab9e13e12be17b41 /net/smc/af_smc.c | |
parent | e63a5f8c19d7807823d68830ebe8cfbd4419ab13 (diff) | |
download | lwn-a6920d1d130c3de039be982eba42542d329dc64c.tar.gz lwn-a6920d1d130c3de039be982eba42542d329dc64c.zip |
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.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index fdb2976117bd..d03b8d29ffc0 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; } |