infiniband: remove WARN that is not kernel bug
authorLeon Romanovsky <leon@kernel.org>
Mon, 21 Nov 2016 17:38:20 +0000 (19:38 +0200)
committerDoug Ledford <dledford@redhat.com>
Sat, 3 Dec 2016 18:17:07 +0000 (13:17 -0500)
On Mon, Nov 21, 2016 at 09:52:53AM -0700, Jason Gunthorpe wrote:
> On Mon, Nov 21, 2016 at 02:14:08PM +0200, Leon Romanovsky wrote:
> > >
> > > In ib_ucm_write function there is a wrong prefix:
> > >
> > > + pr_err_once("ucm_write: process %d (%s) tried to do something hinky\n",
> >
> > I did it intentionally to have the same errors for all flows.
>
> Lets actually use a good message too please?
>
>  pr_err_once("ucm_write: process %d (%s) changed security contexts after opening FD, this is not allowed.\n",
>
> Jason

>From 70f95b2d35aea42e5b97e7d27ab2f4e8effcbe67 Mon Sep 17 00:00:00 2001
From: Leon Romanovsky <leonro@mellanox.com>
Date: Mon, 21 Nov 2016 13:30:59 +0200
Subject: [PATCH rdma-next V2] 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@google.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/ucm.c
drivers/infiniband/core/ucma.c
drivers/infiniband/core/uverbs_main.c
drivers/infiniband/hw/qib/qib_file_ops.c

index 7713ef089c3ccc5109045c2ed88455799d740033..579f9a7f62838caafaca7c2d234e5fac6ebc8f1a 100644 (file)
@@ -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) changed security contexts after opening file descriptor, this is not allowed.\n",
+                           task_tgid_vnr(current), current->comm);
                return -EACCES;
+       }
 
        if (len < sizeof(hdr))
                return -EINVAL;
index 9520154f1d7c96ddb521ad4e146e8ef251dcd49a..e12f8faf8c2302f5b01a2ec84e99e753ba432479 100644 (file)
@@ -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) changed security contexts after opening file descriptor, this is not allowed.\n",
+                           task_tgid_vnr(current), current->comm);
                return -EACCES;
+       }
 
        if (len < sizeof(hdr))
                return -EINVAL;
index 0012fa58c105ded78fa433b89024b8ab176aced0..3efec031c2539d4820f63d3981926745032648c0 100644 (file)
@@ -749,8 +749,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) changed security contexts after opening file descriptor, this is not allowed.\n",
+                           task_tgid_vnr(current), current->comm);
                return -EACCES;
+       }
 
        if (count < sizeof hdr)
                return -EINVAL;
index 382466a90da7331e4492fab59d60bf904db36df1..2d1eacf1dfed601c0b5f3f04a87d5ca8ebc532e0 100644 (file)
@@ -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) changed security contexts after opening file descriptor, this is not allowed.\n",
+                           task_tgid_vnr(current), current->comm);
                return -EACCES;
+       }
 
        if (count < sizeof(cmd.type)) {
                ret = -EINVAL;