aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKarsten Graul <kgraul@linux.ibm.com>2020-10-23 20:48:29 +0200
committerJakub Kicinski <kuba@kernel.org>2020-10-26 16:29:14 -0700
commit96d6fded958d971a3695009e0ed43aca6c598283 (patch)
treee2c2602b0cd78968d352ed621160909241eee918
parentnet/smc: fix null pointer dereference in smc_listen_decline() (diff)
downloadwireguard-linux-96d6fded958d971a3695009e0ed43aca6c598283.tar.xz
wireguard-linux-96d6fded958d971a3695009e0ed43aca6c598283.zip
net/smc: fix suppressed return code
The patch that repaired the invalid return code in smcd_new_buf_create() missed to take care of errno ENOSPC which has a special meaning that no more DMBEs can be registered on the device. Fix that by keeping this errno value during the translation of the return code. Fixes: 6b1bbf94ab36 ("net/smc: fix invalid return code in smcd_new_buf_create()") Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--net/smc/smc_core.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c
index d790c43c473f..2b19863f7171 100644
--- a/net/smc/smc_core.c
+++ b/net/smc/smc_core.c
@@ -1615,8 +1615,11 @@ static struct smc_buf_desc *smcd_new_buf_create(struct smc_link_group *lgr,
rc = smc_ism_register_dmb(lgr, bufsize, buf_desc);
if (rc) {
kfree(buf_desc);
- return (rc == -ENOMEM) ? ERR_PTR(-EAGAIN) :
- ERR_PTR(-EIO);
+ if (rc == -ENOMEM)
+ return ERR_PTR(-EAGAIN);
+ if (rc == -ENOSPC)
+ return ERR_PTR(-ENOSPC);
+ return ERR_PTR(-EIO);
}
buf_desc->pages = virt_to_page(buf_desc->cpu_addr);
/* CDC header stored in buf. So, pretend it was smaller */