if (peer != NULL) {
lnet_nid_t nid = peer->lpni_nid;
- int nrefs = atomic_read(&peer->lpni_refcount);
+ int nrefs = kref_read(&peer->lpni_kref);
time64_t lastalive = -1;
char *aliveness = "NA";
int maxcr = (peer->lpni_net) ?
int rc;
int i;
- LIBCFS_ALLOC(buf, buf_len);
- if (buf == NULL)
- return -ENOMEM;
-
if (!write) {
+ LIBCFS_ALLOC(buf, buf_len);
+ if (buf == NULL)
+ return -ENOMEM;
+
lnet_res_lock(0);
for (i = 0; portal_rotors[i].pr_value >= 0; i++) {
rc = 0;
} else {
rc = cfs_trace_copyout_string(buffer, nob,
- buf + pos, "\n");
+ buf + pos, "\n");
}
- goto out;
+ LIBCFS_FREE(buf, buf_len);
+
+ return rc;
}
- rc = cfs_trace_copyin_string(buf, buf_len, buffer, nob);
- if (rc < 0)
- goto out;
+ buf = memdup_user_nul(buffer, nob);
+ if (!buf)
+ return -ENOMEM;
tmp = strim(buf);
}
}
lnet_res_unlock(0);
-out:
- LIBCFS_FREE(buf, buf_len);
+ kfree(buf);
+
return rc;
}