Skip to content
Snippets Groups Projects
Commit 0d934ce7 authored by Isaac Huang's avatar Isaac Huang
Browse files

b=14324, i=liangzhen:

-   avoid accessing LNET peer table entries outside LNET_LOCK()
parent 5b26bbe0
No related branches found
No related tags found
No related merge requests found
...@@ -281,7 +281,7 @@ static struct file_operations lnet_routes_fops = { ...@@ -281,7 +281,7 @@ static struct file_operations lnet_routes_fops = {
typedef struct { typedef struct {
__u64 lrtrsi_version; __u64 lrtrsi_version;
lnet_peer_t *lrtrsi_router; lnet_peer_t *lrtrsi_router;
loff_t lrtrsi_off; loff_t lrtrsi_off;
} lnet_router_seq_iterator_t; } lnet_router_seq_iterator_t;
...@@ -321,7 +321,7 @@ lnet_router_seq_seek (lnet_router_seq_iterator_t *lrtrsi, loff_t off) ...@@ -321,7 +321,7 @@ lnet_router_seq_seek (lnet_router_seq_iterator_t *lrtrsi, loff_t off)
} }
lrtrsi->lrtrsi_version = the_lnet.ln_routers_version; lrtrsi->lrtrsi_version = the_lnet.ln_routers_version;
lrtrsi->lrtrsi_off = off; lrtrsi->lrtrsi_off = off;
while (r != &the_lnet.ln_routers) { while (r != &the_lnet.ln_routers) {
lnet_peer_t *rtr = list_entry(r, lnet_peer_t *rtr = list_entry(r,
...@@ -339,7 +339,7 @@ lnet_router_seq_seek (lnet_router_seq_iterator_t *lrtrsi, loff_t off) ...@@ -339,7 +339,7 @@ lnet_router_seq_seek (lnet_router_seq_iterator_t *lrtrsi, loff_t off)
} }
lrtrsi->lrtrsi_router = NULL; lrtrsi->lrtrsi_router = NULL;
rc = -ENOENT; rc = -ENOENT;
out: out:
LNET_UNLOCK(); LNET_UNLOCK();
return rc; return rc;
...@@ -395,10 +395,12 @@ lnet_router_seq_show (struct seq_file *s, void *iter) ...@@ -395,10 +395,12 @@ lnet_router_seq_show (struct seq_file *s, void *iter)
{ {
lnet_router_seq_iterator_t *lrtrsi = iter; lnet_router_seq_iterator_t *lrtrsi = iter;
lnet_peer_t *lp; lnet_peer_t *lp;
lnet_nid_t nid; lnet_nid_t nid;
int alive; int alive;
int nrefs; int alive_cnt;
int nrtrrefs; int nrefs;
int nrtrrefs;
time_t last_ping;
if (lrtrsi->lrtrsi_off == 0) { if (lrtrsi->lrtrsi_off == 0) {
seq_printf(s, "%-4s %7s %9s %6s %12s %s\n", seq_printf(s, "%-4s %7s %9s %6s %12s %s\n",
...@@ -416,20 +418,19 @@ lnet_router_seq_show (struct seq_file *s, void *iter) ...@@ -416,20 +418,19 @@ lnet_router_seq_show (struct seq_file *s, void *iter)
return -ESTALE; return -ESTALE;
} }
nrefs = lp->lp_refcount; nid = lp->lp_nid;
nrtrrefs = lp->lp_rtr_refcount; alive = lp->lp_alive;
nid = lp->lp_nid; alive_cnt = lp->lp_alive_count;
alive = lp->lp_alive; nrefs = lp->lp_refcount;
nrtrrefs = lp->lp_rtr_refcount;
last_ping = lp->lp_ping_timestamp;
LNET_UNLOCK(); LNET_UNLOCK();
seq_printf(s, seq_printf(s,
"%-4d %7d %9d %6s %12lu %s\n", "%-4d %7d %9d %6s %12lu %s\n", nrefs, nrtrrefs,
nrefs, nrtrrefs, alive_cnt, alive ? "up" : "down",
lp->lp_alive_count, last_ping, libcfs_nid2str(nid));
alive ? "up" : "down",
lp->lp_ping_timestamp,
libcfs_nid2str(nid));
return 0; return 0;
} }
...@@ -637,7 +638,7 @@ lnet_peer_seq_show (struct seq_file *s, void *iter) ...@@ -637,7 +638,7 @@ lnet_peer_seq_show (struct seq_file *s, void *iter)
seq_printf(s, "%-24s %4d %5s %5d %5d %5d %5d %5d %d\n", seq_printf(s, "%-24s %4d %5s %5d %5d %5d %5d %5d %d\n",
libcfs_nid2str(nid), nrefs, libcfs_nid2str(nid), nrefs,
!rtr ? "~rtr" : (lp->lp_alive ? "up" : "down"), !rtr ? "~rtr" : (alive ? "up" : "down"),
maxcr, rtrcr, minrtrcr, txcr, mintxcr, txqnob); maxcr, rtrcr, minrtrcr, txcr, mintxcr, txqnob);
return 0; return 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment