staging: lustre: remove uses of IS_ERR_VALUE()
authorJohn L. Hammond <john.hammond@intel.com>
Mon, 15 Feb 2016 15:25:49 +0000 (10:25 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 Feb 2016 22:29:23 +0000 (14:29 -0800)
Remove most uses of IS_ERR_VALUE(). This macro was often given an int
argument coming from PTR_ERR(). This invokes implementation defined
behavior since the long value gotten by applying PTR_ERR() to a kernel
pointer will usually not be representable as an int. Moreover it may
be just plain wrong to do this since the expressions IS_ERR(p) and
IS_ERR_VALUE((int) PTR_ERR(p)) are not equivalent for a general
pointer p.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3498
Reviewed-on: http://review.whamcloud.com/6759
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lnet/lnet/acceptor.c
drivers/staging/lustre/lnet/lnet/router.c
drivers/staging/lustre/lustre/libcfs/tracefile.c
drivers/staging/lustre/lustre/llite/statahead.c
drivers/staging/lustre/lustre/mdc/mdc_request.c
drivers/staging/lustre/lustre/mgc/mgc_request.c
drivers/staging/lustre/lustre/obdclass/llog.c
drivers/staging/lustre/lustre/ptlrpc/pinger.c
drivers/staging/lustre/lustre/ptlrpc/service.c

index e5f24ffee5e06463e97897ed4fae7050b7959cf9..07df727e0c56e2776427f0a8a366ef248c358a8e 100644 (file)
@@ -439,6 +439,7 @@ accept2secure(const char *acc, long *sec)
 int
 lnet_acceptor_start(void)
 {
+       struct task_struct *task;
        int rc;
        long rc2;
        long secure;
@@ -457,10 +458,10 @@ lnet_acceptor_start(void)
        if (!lnet_count_acceptor_nis())  /* not required */
                return 0;
 
-       rc2 = PTR_ERR(kthread_run(lnet_acceptor,
-                                 (void *)(ulong_ptr_t)secure,
-                                 "acceptor_%03ld", secure));
-       if (IS_ERR_VALUE(rc2)) {
+       task = kthread_run(lnet_acceptor, (void *)(ulong_ptr_t)secure,
+                          "acceptor_%03ld", secure);
+       if (IS_ERR(task)) {
+               rc2 = PTR_ERR(task);
                CERROR("Can't start acceptor thread: %ld\n", rc2);
 
                return -ESRCH;
index 9c32a01db329074f1d191251ac9d65ee2dbafe31..67566ca2db02b1d41976f9377b21ebfc3dc8c330 100644 (file)
@@ -1004,6 +1004,7 @@ lnet_ping_router_locked(lnet_peer_t *rtr)
 int
 lnet_router_checker_start(void)
 {
+       struct task_struct *task;
        int rc;
        int eqsz;
 
@@ -1034,9 +1035,9 @@ lnet_router_checker_start(void)
        }
 
        the_lnet.ln_rc_state = LNET_RC_STATE_RUNNING;
-       rc = PTR_ERR(kthread_run(lnet_router_checker,
-                                NULL, "router_checker"));
-       if (IS_ERR_VALUE(rc)) {
+       task = kthread_run(lnet_router_checker, NULL, "router_checker");
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
                CERROR("Can't start router checker thread: %d\n", rc);
                /* block until event callback signals exit */
                down(&the_lnet.ln_rc_signal);
index 65c4f1ab0de8a90e16c3a84929e1701ef21b7cff..bc5d0eec70ebb5a996fb32c9775284fbd3913800 100644 (file)
@@ -1056,6 +1056,7 @@ end_loop:
 int cfs_trace_start_thread(void)
 {
        struct tracefiled_ctl *tctl = &trace_tctl;
+       struct task_struct *task;
        int rc = 0;
 
        mutex_lock(&cfs_trace_thread_mutex);
@@ -1067,8 +1068,9 @@ int cfs_trace_start_thread(void)
        init_waitqueue_head(&tctl->tctl_waitq);
        atomic_set(&tctl->tctl_shutdown, 0);
 
-       if (IS_ERR(kthread_run(tracefiled, tctl, "ktracefiled"))) {
-               rc = -ECHILD;
+       task = kthread_run(tracefiled, tctl, "ktracefiled");
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
                goto out;
        }
 
index 88ffd8e3abdb676c2976cfbd7cae097faa96a39e..064794e67c2e02cdbe0d200b73f31706dfdb67c1 100644 (file)
@@ -1498,6 +1498,7 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
        struct ll_sa_entry       *entry;
        struct ptlrpc_thread     *thread;
        struct l_wait_info      lwi   = { 0 };
+       struct task_struct *task;
        int                    rc    = 0;
        struct ll_inode_info     *plli;
 
@@ -1656,10 +1657,11 @@ int do_statahead_enter(struct inode *dir, struct dentry **dentryp,
        lli->lli_sai = sai;
 
        plli = ll_i2info(d_inode(parent));
-       rc = PTR_ERR(kthread_run(ll_statahead_thread, parent,
-                                "ll_sa_%u", plli->lli_opendir_pid));
+       task = kthread_run(ll_statahead_thread, parent, "ll_sa_%u",
+                          plli->lli_opendir_pid);
        thread = &sai->sai_thread;
-       if (IS_ERR_VALUE(rc)) {
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
                CERROR("can't start ll_sa thread, rc: %d\n", rc);
                dput(parent);
                lli->lli_opendir_key = NULL;
index 43481278096ff125113d28215905f22304f299cb..c0d961ade5c8fb00d06820ef3f656247e9e5ae8c 100644 (file)
@@ -1554,6 +1554,7 @@ static int mdc_ioc_changelog_send(struct obd_device *obd,
                                  struct ioc_changelog *icc)
 {
        struct changelog_show *cs;
+       struct task_struct *task;
        int rc;
 
        /* Freed in mdc_changelog_send_thread */
@@ -1571,15 +1572,20 @@ static int mdc_ioc_changelog_send(struct obd_device *obd,
         * New thread because we should return to user app before
         * writing into our pipe
         */
-       rc = PTR_ERR(kthread_run(mdc_changelog_send_thread, cs,
-                                "mdc_clg_send_thread"));
-       if (!IS_ERR_VALUE(rc)) {
-               CDEBUG(D_CHANGELOG, "start changelog thread\n");
-               return 0;
+       task = kthread_run(mdc_changelog_send_thread, cs,
+                          "mdc_clg_send_thread");
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
+               CERROR("%s: can't start changelog thread: rc = %d\n",
+                      obd->obd_name, rc);
+               kfree(cs);
+       } else {
+               rc = 0;
+               CDEBUG(D_CHANGELOG, "%s: started changelog thread\n",
+                      obd->obd_name);
        }
 
        CERROR("Failed to start changelog thread: %d\n", rc);
-       kfree(cs);
        return rc;
 }
 
index ab4800c20a95a967f05e3270cfcec0f554705360..5aeb4268836144841e4047f46f3bf641b76c5735 100644 (file)
@@ -711,6 +711,7 @@ static int mgc_cleanup(struct obd_device *obd)
 static int mgc_setup(struct obd_device *obd, struct lustre_cfg *lcfg)
 {
        struct lprocfs_static_vars lvars = { NULL };
+       struct task_struct *task;
        int rc;
 
        ptlrpcd_addref();
@@ -734,10 +735,10 @@ static int mgc_setup(struct obd_device *obd, struct lustre_cfg *lcfg)
                init_waitqueue_head(&rq_waitq);
 
                /* start requeue thread */
-               rc = PTR_ERR(kthread_run(mgc_requeue_thread, NULL,
-                                            "ll_cfg_requeue"));
-               if (IS_ERR_VALUE(rc)) {
-                       CERROR("%s: Cannot start requeue thread (%d),no more log updates!\n",
+               task = kthread_run(mgc_requeue_thread, NULL, "ll_cfg_requeue");
+               if (IS_ERR(task)) {
+                       rc = PTR_ERR(task);
+                       CERROR("%s: cannot start requeue thread: rc = %d; no more log updates\n",
                               obd->obd_name, rc);
                        goto err_cleanup;
                }
index f956d7ed67854d4c6989cff4b68e1e741e13de9e..85b74ed52c464f3adcd0aed432f7b957cb5547ec 100644 (file)
@@ -376,17 +376,19 @@ int llog_process_or_fork(const struct lu_env *env,
        lpi->lpi_catdata   = catdata;
 
        if (fork) {
+               struct task_struct *task;
+
                /* The new thread can't use parent env,
                 * init the new one in llog_process_thread_daemonize. */
                lpi->lpi_env = NULL;
                init_completion(&lpi->lpi_completion);
-               rc = PTR_ERR(kthread_run(llog_process_thread_daemonize, lpi,
-                                            "llog_process_thread"));
-               if (IS_ERR_VALUE(rc)) {
+               task = kthread_run(llog_process_thread_daemonize, lpi,
+                                  "llog_process_thread");
+               if (IS_ERR(task)) {
+                       rc = PTR_ERR(task);
                        CERROR("%s: cannot start thread: rc = %d\n",
                               loghandle->lgh_ctxt->loc_obd->obd_name, rc);
-                       kfree(lpi);
-                       return rc;
+                       goto out_lpi;
                }
                wait_for_completion(&lpi->lpi_completion);
        } else {
@@ -394,6 +396,7 @@ int llog_process_or_fork(const struct lu_env *env,
                llog_process_thread(lpi);
        }
        rc = lpi->lpi_rc;
+out_lpi:
        kfree(lpi);
        return rc;
 }
index fb2d5236a971df21b2f0ee52b2a6a8fe343167a3..912ab595dc8b8d4882d380395984674956a60e44 100644 (file)
@@ -293,6 +293,7 @@ static struct ptlrpc_thread pinger_thread;
 int ptlrpc_start_pinger(void)
 {
        struct l_wait_info lwi = { 0 };
+       struct task_struct *task;
        int rc;
 
        if (!thread_is_init(&pinger_thread) &&
@@ -303,10 +304,11 @@ int ptlrpc_start_pinger(void)
 
        strcpy(pinger_thread.t_name, "ll_ping");
 
-       rc = PTR_ERR(kthread_run(ptlrpc_pinger_main, &pinger_thread,
-                                "%s", pinger_thread.t_name));
-       if (IS_ERR_VALUE(rc)) {
-               CERROR("cannot start thread: %d\n", rc);
+       task = kthread_run(ptlrpc_pinger_main, &pinger_thread,
+                          pinger_thread.t_name);
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
+               CERROR("cannot start pinger thread: rc = %d\n", rc);
                return rc;
        }
        l_wait_event(pinger_thread.t_ctl_waitq,
index 8598300a61d1a1c172c978c75bb2fd1b26cefd7f..830468a7b868235bc252460b8b6459eb8a039e60 100644 (file)
@@ -2255,24 +2255,27 @@ static int ptlrpc_start_hr_threads(void)
 
                for (j = 0; j < hrp->hrp_nthrs; j++) {
                        struct  ptlrpc_hr_thread *hrt = &hrp->hrp_thrs[j];
+                       struct task_struct *task;
 
-                       rc = PTR_ERR(kthread_run(ptlrpc_hr_main,
+                       task = kthread_run(ptlrpc_hr_main,
                                                 &hrp->hrp_thrs[j],
                                                 "ptlrpc_hr%02d_%03d",
                                                 hrp->hrp_cpt,
-                                                hrt->hrt_id));
-                       if (IS_ERR_VALUE(rc))
+                                                hrt->hrt_id);
+                       if (IS_ERR(task)) {
+                               rc = PTR_ERR(task);
                                break;
+                       }
                }
                wait_event(ptlrpc_hr.hr_waitq,
                               atomic_read(&hrp->hrp_nstarted) == j);
-               if (!IS_ERR_VALUE(rc))
-                       continue;
 
-               CERROR("Reply handling thread %d:%d Failed on starting: rc = %d\n",
-                      i, j, rc);
-               ptlrpc_stop_hr_threads();
-               return rc;
+               if (rc < 0) {
+                       CERROR("cannot start reply handler thread %d:%d: rc = %d\n",
+                              i, j, rc);
+                       ptlrpc_stop_hr_threads();
+                       return rc;
+               }
        }
        return 0;
 }
@@ -2374,6 +2377,7 @@ int ptlrpc_start_thread(struct ptlrpc_service_part *svcpt, int wait)
        struct l_wait_info lwi = { 0 };
        struct ptlrpc_thread *thread;
        struct ptlrpc_service *svc;
+       struct task_struct *task;
        int rc;
 
        LASSERT(svcpt != NULL);
@@ -2442,9 +2446,10 @@ int ptlrpc_start_thread(struct ptlrpc_service_part *svcpt, int wait)
        }
 
        CDEBUG(D_RPCTRACE, "starting thread '%s'\n", thread->t_name);
-       rc = PTR_ERR(kthread_run(ptlrpc_main, thread, "%s", thread->t_name));
-       if (IS_ERR_VALUE(rc)) {
-               CERROR("cannot start thread '%s': rc %d\n",
+       task = kthread_run(ptlrpc_main, thread, "%s", thread->t_name);
+       if (IS_ERR(task)) {
+               rc = PTR_ERR(task);
+               CERROR("cannot start thread '%s': rc = %d\n",
                       thread->t_name, rc);
                spin_lock(&svcpt->scp_lock);
                --svcpt->scp_nthrs_starting;