int lprocfs_single_release(struct inode *, struct file *);
 int lprocfs_seq_release(struct inode *, struct file *);
 
-/* You must use these macros when you want to refer to
- * the import in a client obd_device for a lprocfs entry */
-#define LPROCFS_CLIMP_CHECK(obd) do {     \
-       typecheck(struct obd_device *, obd);    \
-       down_read(&(obd)->u.cli.cl_sem);    \
-       if ((obd)->u.cli.cl_import == NULL) {   \
-            up_read(&(obd)->u.cli.cl_sem); \
-            return -ENODEV;                \
-       }                                      \
-} while (0)
 #define LPROCFS_CLIMP_EXIT(obd)                 \
        up_read(&(obd)->u.cli.cl_sem)
 
 
        struct obd_device *obd = data;
        struct obd_import *imp;
        char *imp_state_name = NULL;
+       int rc;
 
        LASSERT(obd != NULL);
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        imp = obd->u.cli.cl_import;
        imp_state_name = ptlrpc_import_state_name(imp->imp_state);
        seq_printf(m, "%s\t%s%s\n",
 {
        struct obd_device *obd = data;
        struct ptlrpc_connection *conn;
+       int rc;
 
        LASSERT(obd != NULL);
 
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        conn = obd->u.cli.cl_import->imp_connection;
        if (conn && obd->u.cli.cl_import)
                seq_printf(m, "%s\n", conn->c_remote_uuid.uuid);
        int                             j;
        int                             k;
        int                             rw      = 0;
+       int                             rc;
 
        LASSERT(obd != NULL);
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        imp = obd->u.cli.cl_import;
 
        seq_printf(m,
 {
        struct obd_device *obd = data;
        struct obd_import *imp;
-       int j, k;
+       int j, k, rc;
 
        LASSERT(obd != NULL);
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        imp = obd->u.cli.cl_import;
 
        seq_printf(m, "current_state: %s\n",
        unsigned int cur, worst;
        time64_t now, worstt;
        struct dhms ts;
-       int i;
+       int i, rc;
 
        LASSERT(obd != NULL);
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        imp = obd->u.cli.cl_import;
 
        now = ktime_get_real_seconds();
 {
        struct obd_device *obd = data;
        __u64 flags;
+       int rc;
+
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
 
-       LPROCFS_CLIMP_CHECK(obd);
        flags = obd->u.cli.cl_import->imp_connect_data.ocd_connect_flags;
        seq_printf(m, "flags=%#llx\n", flags);
        obd_connect_seq_flags2str(m, flags, "\n");
 
        struct ptlrpc_request *req;
        int rc;
 
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        req = ptlrpc_prep_ping(obd->u.cli.cl_import);
        LPROCFS_CLIMP_EXIT(obd);
        if (req == NULL)
 {
        struct obd_device *obd = m->private;
        struct obd_import *imp = obd->u.cli.cl_import;
+       int rc;
+
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
 
-       LPROCFS_CLIMP_CHECK(obd);
        seq_printf(m, "%d\n", !imp->imp_no_pinger_recover);
        LPROCFS_CLIMP_EXIT(obd);
 
        if (val != 0 && val != 1)
                return -ERANGE;
 
-       LPROCFS_CLIMP_CHECK(obd);
+       rc = lprocfs_climp_check(obd);
+       if (rc)
+               return rc;
+
        spin_lock(&imp->imp_lock);
        imp->imp_no_pinger_recover = !val;
        spin_unlock(&imp->imp_lock);