lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c0a1aade-a6ee-482a-bc6e-da07a4c69cff@linux.alibaba.com>
Date: Fri, 9 Aug 2024 18:01:54 +0800
From: Wen Gu <guwen@...ux.alibaba.com>
To: Liu Jian <liujian56@...wei.com>, linux-rdma@...r.kernel.org,
 linux-s390@...r.kernel.org, netdev@...r.kernel.org
Cc: jgg@...pe.ca, leon@...nel.org, zyjzyj2000@...il.com,
 wenjia@...ux.ibm.com, jaka@...ux.ibm.com, alibuda@...ux.alibaba.com,
 tonylu@...ux.alibaba.com, davem@...emloft.net, edumazet@...gle.com,
 kuba@...nel.org, pabeni@...hat.com
Subject: Re: [PATCH net-next 3/4] net/smc: fix one NULL pointer dereference in
 smc_ib_is_sg_need_sync()



On 2024/8/9 16:31, Liu Jian wrote:
> BUG: kernel NULL pointer dereference, address: 0000000000000238
> PGD 0 P4D 0
> Oops: 0000 [#1] PREEMPT SMP PTI
> CPU: 3 PID: 289 Comm: kworker/3:1 Kdump: loaded Tainted: G           OE
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
> Workqueue: smc_hs_wq smc_listen_work [smc]
> RIP: 0010:dma_need_sync+0x5/0x60
> ...
> Call Trace:
>   <TASK>
>   ? dma_need_sync+0x5/0x60
>   ? smc_ib_is_sg_need_sync+0x61/0xf0 [smc]
>   smcr_buf_map_link+0x24a/0x380 [smc]
>   __smc_buf_create+0x483/0xb10 [smc]
>   smc_buf_create+0x21/0xe0 [smc]
>   smc_listen_work+0xf11/0x14f0 [smc]
>   ? smc_tcp_listen_work+0x364/0x520 [smc]
>   process_one_work+0x18d/0x3f0
>   worker_thread+0x304/0x440
>   kthread+0xe4/0x110
>   ret_from_fork+0x47/0x70
>   ret_from_fork_asm+0x1a/0x30
>   </TASK>
> 
> If the software RoCE device is used, ibdev->dma_device is a null pointer.
> As a result, the problem occurs. Null pointer detection is added to
> prevent problems.
> 
> Signed-off-by: Liu Jian <liujian56@...wei.com>
> ---
>   net/smc/smc_ib.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c
> index 382351ac9434..059822cc3fde 100644
> --- a/net/smc/smc_ib.c
> +++ b/net/smc/smc_ib.c
> @@ -748,6 +748,8 @@ bool smc_ib_is_sg_need_sync(struct smc_link *lnk,
>   		    buf_slot->sgt[lnk->link_idx].nents, i) {
>   		if (!sg_dma_len(sg))
>   			break;
> +		if (!lnk->smcibdev->ibdev->dma_device)
> +			break;

LGTM.

Reviewed-by: Wen Gu <guwen@...ux.alibaba.com>

>   		if (dma_need_sync(lnk->smcibdev->ibdev->dma_device,
>   				  sg_dma_address(sg))) {
>   			ret = true;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ