All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers: target: iscsi: cxgbit: is there exist a memleak in cxgbit_create_server4?
@ 2020-04-20  2:48 易林
  2020-04-20  6:23 ` Zhiyun Qian
  0 siblings, 1 reply; 3+ messages in thread
From: 易林 @ 2020-04-20  2:48 UTC (permalink / raw)
  To: vishal; +Cc: csong, yiqiuping, zhiyunq, jian liu, netdev

static int
cxgbit_create_server4(struct cxgbit_device *cdev, unsigned int stid,
		      struct cxgbit_np *cnp)
{
	struct sockaddr_in *sin = (struct sockaddr_in *)
				   &cnp->com.local_addr;
	int ret;

	pr_debug("%s: dev = %s; stid = %u; sin_port = %u\n",
		 __func__, cdev->lldi.ports[0]->name, stid, sin->sin_port);

	cxgbit_get_cnp(cnp);  
	cxgbit_init_wr_wait(&cnp->com.wr_wait);

	ret = cxgb4_create_server(cdev->lldi.ports[0],
				  stid, sin->sin_addr.s_addr,
				  sin->sin_port, 0,
				  cdev->lldi.rxq_ids[0]);
	if (!ret)
		ret = cxgbit_wait_for_reply(cdev,
					    &cnp->com.wr_wait,
					    0, 10, __func__);
	else if (ret > 0)
		ret = net_xmit_errno(ret);
	else
		cxgbit_put_cnp(cnp);

	if (ret)
		pr_err("create server failed err %d stid %d laddr %pI4 lport %d\n",
		       ret, stid, &sin->sin_addr, ntohs(sin->sin_port));
	return ret;
}
what if cxgb4_create_server return a >0 value, the cnp reference wouldn't be released. Or, when cxgb4_create_server  return >0 value, cnp has been released somewhere.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: drivers: target: iscsi: cxgbit: is there exist a memleak in cxgbit_create_server4?
  2020-04-20  2:48 drivers: target: iscsi: cxgbit: is there exist a memleak in cxgbit_create_server4? 易林
@ 2020-04-20  6:23 ` Zhiyun Qian
  2020-04-20  6:31   ` Randy Dunlap
  0 siblings, 1 reply; 3+ messages in thread
From: Zhiyun Qian @ 2020-04-20  6:23 UTC (permalink / raw)
  To: 易林; +Cc: vishal, csong, yiqiuping, jian liu, netdev

-Zhiyun

On Mon, Apr 20, 2020 at 2:48 AM 易林 <yilin@iie.ac.cn> wrote:
>
> static int
> cxgbit_create_server4(struct cxgbit_device *cdev, unsigned int stid,
>                       struct cxgbit_np *cnp)
> {
>         struct sockaddr_in *sin = (struct sockaddr_in *)
>                                    &amp;cnp-&gt;com.local_addr;
>         int ret;
>
>         pr_debug("%s: dev = %s; stid = %u; sin_port = %u\n",
>                  __func__, cdev-&gt;lldi.ports[0]-&gt;name, stid, sin-&gt;sin_port);
>
>         cxgbit_get_cnp(cnp);
>         cxgbit_init_wr_wait(&amp;cnp-&gt;com.wr_wait);
>
>         ret = cxgb4_create_server(cdev-&gt;lldi.ports[0],
>                                   stid, sin-&gt;sin_addr.s_addr,
>                                   sin-&gt;sin_port, 0,
>                                   cdev-&gt;lldi.rxq_ids[0]);
>         if (!ret)
>                 ret = cxgbit_wait_for_reply(cdev,
>                                             &amp;cnp-&gt;com.wr_wait,
>                                             0, 10, __func__);
>         else if (ret &gt; 0)
>                 ret = net_xmit_errno(ret);
>         else
>                 cxgbit_put_cnp(cnp);
>
>         if (ret)
>                 pr_err("create server failed err %d stid %d laddr %pI4 lport %d\n",
>                        ret, stid, &amp;sin-&gt;sin_addr, ntohs(sin-&gt;sin_port));
>         return ret;
> }
> what if cxgb4_create_server return a &gt;0 value, the cnp reference wouldn't be released. Or, when cxgb4_create_server  return &gt;0 value, cnp has been released somewhere.

"&gt:0"? typo?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: drivers: target: iscsi: cxgbit: is there exist a memleak in cxgbit_create_server4?
  2020-04-20  6:23 ` Zhiyun Qian
@ 2020-04-20  6:31   ` Randy Dunlap
  0 siblings, 0 replies; 3+ messages in thread
From: Randy Dunlap @ 2020-04-20  6:31 UTC (permalink / raw)
  To: Zhiyun Qian, 易林; +Cc: vishal, csong, yiqiuping, jian liu, netdev

On 4/19/20 11:23 PM, Zhiyun Qian wrote:
> -Zhiyun
> 
> On Mon, Apr 20, 2020 at 2:48 AM 易林 <yilin@iie.ac.cn> wrote:
>>
>> static int
>> cxgbit_create_server4(struct cxgbit_device *cdev, unsigned int stid,
>>                       struct cxgbit_np *cnp)
>> {
>>         struct sockaddr_in *sin = (struct sockaddr_in *)
>>                                    &amp;cnp-&gt;com.local_addr;
>>         int ret;
>>
>>         pr_debug("%s: dev = %s; stid = %u; sin_port = %u\n",
>>                  __func__, cdev-&gt;lldi.ports[0]-&gt;name, stid, sin-&gt;sin_port);
>>
>>         cxgbit_get_cnp(cnp);
>>         cxgbit_init_wr_wait(&amp;cnp-&gt;com.wr_wait);
>>
>>         ret = cxgb4_create_server(cdev-&gt;lldi.ports[0],
>>                                   stid, sin-&gt;sin_addr.s_addr,
>>                                   sin-&gt;sin_port, 0,
>>                                   cdev-&gt;lldi.rxq_ids[0]);
>>         if (!ret)
>>                 ret = cxgbit_wait_for_reply(cdev,
>>                                             &amp;cnp-&gt;com.wr_wait,
>>                                             0, 10, __func__);
>>         else if (ret &gt; 0)
>>                 ret = net_xmit_errno(ret);
>>         else
>>                 cxgbit_put_cnp(cnp);
>>
>>         if (ret)
>>                 pr_err("create server failed err %d stid %d laddr %pI4 lport %d\n",
>>                        ret, stid, &amp;sin-&gt;sin_addr, ntohs(sin-&gt;sin_port));
>>         return ret;
>> }
>> what if cxgb4_create_server return a &gt;0 value, the cnp reference wouldn't be released. Or, when cxgb4_create_server  return &gt;0 value, cnp has been released somewhere.
> 
> "&gt:0"? typo?
> 

Lots of html conversions of > < etc. Makes it difficult to read.

Convert &gt; to >
Convert &lt; to <

Preferably repost as readable C source code.

-- 
~Randy


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-04-20  6:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-20  2:48 drivers: target: iscsi: cxgbit: is there exist a memleak in cxgbit_create_server4? 易林
2020-04-20  6:23 ` Zhiyun Qian
2020-04-20  6:31   ` Randy Dunlap

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.