<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi&nbsp;<span style="white-space: pre-wrap">Philipp,</span></div><div><span style="white-space: pre-wrap">  Thanks for reply.</span></div><div  style="position:relative;zoom:1"></div><pre><br>From: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Date: 2025-07-31 20:35:17
To:  "zhengbing.huang" &lt;zhengbing.huang@easystack.cn&gt;
Cc:  drbd-dev@lists.linbit.com
Subject: Re: [PATCH 1/3] rdma: Fix kernel crash in dtr_create_rx_desc()&gt;Hi Zhengbing,
&gt;
&gt;Thanks for the analysis and the patch. I took the freedom and slightly
&gt;modified it before applying it. Instead of changing the behaviour of
&gt;the dtr_path_get_cm() function I introduce a new one:
&gt;dtr_path_get_cm_connected().
&gt;
&gt;Please see
&gt;https://github.com/LINBIT/drbd/commit/ae1b0bdfa2e4ea59d15199b55a6f0c571844f576
&gt;
&gt;Also ...
&gt;
&gt;[...]
&gt;&gt; -       for (i = DATA_STREAM; i &lt;= CONTROL_STREAM ; i++)
&gt;&gt; -               dtr_create_rx_desc(&amp;path-&gt;flow[i], GFP_NOIO);
&gt;&gt; -
</pre><div><span style="white-space: normal">&gt;</span></div><div>Sorry for the lack of explanation for this part of the code.&nbsp;</div><div><br></div><div>These two lines of code are in the path prepare phase,&nbsp;</div><div>so the cm state at this time is definitely not connected.&nbsp;</div><div>After the dtr_create_rx_desc() function calls the dtr_path_get_cm_connected() function,&nbsp;</div><div>it is definitely impossible to create rx_desc, which is the reason for delete them.<br><br>And in the test after delete this code, the rdma connection was normal.</div><pre>&gt;I dropped this part. It came without explanation in the commit
&gt;message. I believe that some RDMA transports require at least one
&gt;rx-descriptor to enable them to establish a connection.
&gt;
&gt;
&gt;Best regards,
&gt; Philipp
&gt;
</pre><div><pre>Best regards,<br>  zhengbing</pre><br></div><div><br></div></div><br>