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

b=14238, i=liangzhen, i=maxim:

-   NULL md_me in lnet_md_unlink().
-   iterate ptl_ml safely since 'me' can be removed within the loop.
parent 1a859d0b
No related branches found
No related tags found
No related merge requests found
...@@ -28,6 +28,10 @@ tbd Cluster File Systems, Inc. <info@clusterfs.com> ...@@ -28,6 +28,10 @@ tbd Cluster File Systems, Inc. <info@clusterfs.com>
mxlnd - MX 1.2.1 or later, mxlnd - MX 1.2.1 or later,
ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x ptllnd - Portals 3.3 / UNICOS/lc 1.5.x, 2.0.x
Severity : normal
Bugzilla : 14238
Description: ASSERTION(me == md->md_me) failed in lnet_match_md()
Severity : normal Severity : normal
Bugzilla : 12494 Bugzilla : 12494
Description: increase send queue size for ciblnd/openiblnd Description: increase send queue size for ciblnd/openiblnd
......
...@@ -39,6 +39,7 @@ lnet_md_unlink(lnet_libmd_t *md) ...@@ -39,6 +39,7 @@ lnet_md_unlink(lnet_libmd_t *md)
/* Disassociate from ME (if any), and unlink it if it was created /* Disassociate from ME (if any), and unlink it if it was created
* with LNET_UNLINK */ * with LNET_UNLINK */
if (me != NULL) { if (me != NULL) {
md->md_me = NULL;
me->me_md = NULL; me->me_md = NULL;
if (me->me_unlink == LNET_UNLINK) if (me->me_unlink == LNET_UNLINK)
lnet_me_unlink(me); lnet_me_unlink(me);
......
...@@ -145,7 +145,7 @@ lnet_me_unlink(lnet_me_t *me) ...@@ -145,7 +145,7 @@ lnet_me_unlink(lnet_me_t *me)
{ {
list_del (&me->me_list); list_del (&me->me_list);
if (me->me_md) { if (me->me_md != NULL) {
me->me_md->md_me = NULL; me->me_md->md_me = NULL;
lnet_md_unlink(me->me_md); lnet_md_unlink(me->me_md);
} }
......
...@@ -140,8 +140,8 @@ lnet_match_md(int index, int op_mask, lnet_process_id_t src, ...@@ -140,8 +140,8 @@ lnet_match_md(int index, int op_mask, lnet_process_id_t src,
lnet_libmd_t **md_out) lnet_libmd_t **md_out)
{ {
lnet_portal_t *ptl = &the_lnet.ln_portals[index]; lnet_portal_t *ptl = &the_lnet.ln_portals[index];
struct list_head *tmp;
lnet_me_t *me; lnet_me_t *me;
lnet_me_t *tmp;
lnet_libmd_t *md; lnet_libmd_t *md;
int rc; int rc;
...@@ -154,11 +154,10 @@ lnet_match_md(int index, int op_mask, lnet_process_id_t src, ...@@ -154,11 +154,10 @@ lnet_match_md(int index, int op_mask, lnet_process_id_t src,
return LNET_MATCHMD_DROP; return LNET_MATCHMD_DROP;
} }
list_for_each (tmp, &ptl->ptl_ml) { list_for_each_entry_safe (me, tmp, &ptl->ptl_ml, me_list) {
me = list_entry(tmp, lnet_me_t, me_list);
md = me->me_md; md = me->me_md;
/* ME attached but MD not attached yet */ /* ME attached but MD not attached yet */
if (md == NULL) if (md == NULL)
continue; continue;
......
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