On Mon, Nov 21, 2016 at 11:30:21AM +0100, Dmitry Vyukov wrote: > On Mon, Nov 21, 2016 at 11:25 AM, Miroslav Benes <mbenes@xxxxxxx> wrote: > > On Mon, 21 Nov 2016, Dmitry Vyukov wrote: > > > >> WARNINGs mean kernel bugs. > >> The one in ucma_write() points to user programming error > >> or a malicious attempt. This is not a kernel bug, remove it. > >> > >> BUG/WARNs that are not kernel bugs hinder automated testing effots. > >> > >> Signed-off-by: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > >> Cc: Doug Ledford <dledford@xxxxxxxxxx> > >> Cc: Sean Hefty <sean.hefty@xxxxxxxxx> > >> Cc: Hal Rosenstock <hal.rosenstock@xxxxxxxxx> > >> Cc: Leon Romanovsky <leon@xxxxxxxxxx> > >> Cc: linux-rdma@xxxxxxxxxxxxxxx > >> Cc: linux-kernel@xxxxxxxxxxxxxxx > >> Cc: syzkaller@xxxxxxxxxxxxxxxx > >> > >> --- > >> Changes since v1: > >> - added printk_once > >> --- > >> drivers/infiniband/core/ucma.c | 5 ++++- > >> 1 file changed, 4 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c > >> index 9520154..405d0ce 100644 > >> --- a/drivers/infiniband/core/ucma.c > >> +++ b/drivers/infiniband/core/ucma.c > >> @@ -1584,8 +1584,11 @@ static ssize_t ucma_write(struct file *filp, const char __user *buf, > >> struct rdma_ucm_cmd_hdr hdr; > >> ssize_t ret; > >> > >> - if (WARN_ON_ONCE(!ib_safe_file_access(filp))) > >> + if (!ib_safe_file_access(filp)) { > >> + printk_once("ucma_write: process %d (%s) tried to do something hinky\n", > >> + task_tgid_vnr(current), current->comm); > >> return -EACCES; > >> + } > >> > >> if (len < sizeof(hdr)) > >> return -EINVAL; > > > > FWIW, WARN_ON_ONCE came with commit e6bd18f57aad ("IB/security: Restrict > > use of the write() interface"). Would it make sense to change the other > > places as well? > > > I guess so. > Can I ask somebody of infiniband maintainers to take care of this? Please see below, Hope it helps. > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html
From e0bfe4771591f9ffbcaa4e66d6257ed95e2d7188 Mon Sep 17 00:00:00 2001 From: Leon Romanovsky <leonro@xxxxxxxxxxxx> Date: Mon, 21 Nov 2016 13:30:59 +0200 Subject: [PATCH] IB/{core, qib}: Remove WARN that is not kernel bug WARNINGs mean kernel bugs, in this case, they are placed to mark programming errors and/or malicious attempts. BUG/WARNs that are not kernel bugs hinder automated testing efforts. Signed-off-by: Dmitry Vyukov <dvyukov@xxxxxxxxxx> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> --- drivers/infiniband/core/ucm.c | 5 ++++- drivers/infiniband/core/ucma.c | 5 ++++- drivers/infiniband/core/uverbs_main.c | 5 ++++- drivers/infiniband/hw/qib/qib_file_ops.c | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c index 7713ef0..0076b55 100644 --- a/drivers/infiniband/core/ucm.c +++ b/drivers/infiniband/core/ucm.c @@ -1104,8 +1104,11 @@ static ssize_t ib_ucm_write(struct file *filp, const char __user *buf, struct ib_ucm_cmd_hdr hdr; ssize_t result; - if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + if (!ib_safe_file_access(filp)) { + pr_err_once("ucm_write: process %d (%s) tried to do something hinky\n", + task_tgid_vnr(current), current->comm); return -EACCES; + } if (len < sizeof(hdr)) return -EINVAL; diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c index 9520154..31fa27f 100644 --- a/drivers/infiniband/core/ucma.c +++ b/drivers/infiniband/core/ucma.c @@ -1584,8 +1584,11 @@ static ssize_t ucma_write(struct file *filp, const char __user *buf, struct rdma_ucm_cmd_hdr hdr; ssize_t ret; - if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + if (!ib_safe_file_access(filp)) { + pr_err_once("ucma_write: process %d (%s) tried to do something hinky\n", + task_tgid_vnr(current), current->comm); return -EACCES; + } if (len < sizeof(hdr)) return -EINVAL; diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 44b1104..329eb15 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -746,8 +746,11 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf, int srcu_key; ssize_t ret; - if (WARN_ON_ONCE(!ib_safe_file_access(filp))) + if (!ib_safe_file_access(filp)) { + pr_err_once("uverbs_write: process %d (%s) tried to do something hinky\n", + task_tgid_vnr(current), current->comm); return -EACCES; + } if (count < sizeof hdr) return -EINVAL; diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c index 382466a..b43ea52 100644 --- a/drivers/infiniband/hw/qib/qib_file_ops.c +++ b/drivers/infiniband/hw/qib/qib_file_ops.c @@ -2066,8 +2066,11 @@ static ssize_t qib_write(struct file *fp, const char __user *data, ssize_t ret = 0; void *dest; - if (WARN_ON_ONCE(!ib_safe_file_access(fp))) + if (!ib_safe_file_access(fp)) { + pr_err_once("qib_write: process %d (%s) tried to do something hinky\n", + task_tgid_vnr(current), current->comm); return -EACCES; + } if (count < sizeof(cmd.type)) { ret = -EINVAL; -- 2.7.4
Attachment:
signature.asc
Description: PGP signature