* [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds @ 2017-10-25 9:57 Yisheng Xie 2017-10-25 9:57 ` [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context Yisheng Xie ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Yisheng Xie @ 2017-10-25 9:57 UTC (permalink / raw) To: kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, martin.petersen Cc: megaraidlinux.pdl, linux-scsi, linux-kernel, Yisheng Xie megasas_alloc_cmds is to alloc cmd_list of instance instead of fusion, and fusion is useless in this function. Just remove it. Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- drivers/scsi/megaraid/megaraid_sas_base.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index e518dad..0640168 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -4033,9 +4033,7 @@ int megasas_alloc_cmds(struct megasas_instance *instance) int j; u16 max_cmd; struct megasas_cmd *cmd; - struct fusion_context *fusion; - fusion = instance->ctrl_context; max_cmd = instance->max_mfi_cmds; /* -- 1.7.12.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context 2017-10-25 9:57 [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Yisheng Xie @ 2017-10-25 9:57 ` Yisheng Xie 2017-10-25 12:36 ` Martin K. Petersen 2017-10-31 17:36 ` [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Sumit Saxena 2017-11-03 15:26 ` Martin K. Petersen 2 siblings, 1 reply; 7+ messages in thread From: Yisheng Xie @ 2017-10-25 9:57 UTC (permalink / raw) To: kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, martin.petersen Cc: megaraidlinux.pdl, linux-scsi, linux-kernel, Yisheng Xie, linux-mm, Shu Wang I have get many kmemleak reports just similar to commit 70c54e210ee9 (scsi: megaraid_sas: fix memleak in megasas_alloc_cmdlist_fusion) on v4.14-rc6, however it seems have a different stroy: unreferenced object 0xffff8b5139d9d2c0 (size 192): comm "kworker/0:0", pid 3, jiffies 4294689182 (age 11347.731s) hex dump (first 32 bytes): 00 33 84 7b 41 8b ff ff 00 33 84 7b 00 00 00 00 .3.{A....3.{.... 00 30 8c 7b 41 8b ff ff 00 30 8c 7b 00 00 00 00 .0.{A....0.{.... backtrace: [<ffffffff927461ea>] kmemleak_alloc+0x4a/0xa0 [<ffffffff92215eee>] kmem_cache_alloc_trace+0xce/0x1d0 [<ffffffffc03f96e4>] megasas_alloc_cmdlist_fusion+0xd4/0x180 [megaraid_sas] [<ffffffffc03f9df5>] megasas_alloc_cmds_fusion+0x25/0x410 [megaraid_sas] [<ffffffffc03fb05d>] megasas_init_adapter_fusion+0x21d/0x6e0 [megaraid_sas] [<ffffffffc03f70e8>] megasas_init_fw+0x338/0xd00 [megaraid_sas] [<ffffffffc03f806e>] megasas_probe_one.part.34+0x5be/0x1040 [megaraid_sas] [<ffffffffc03f8b36>] megasas_probe_one+0x46/0xc0 [megaraid_sas] [<ffffffff923c0ec5>] local_pci_probe+0x45/0xa0 [<ffffffff9209fcf4>] work_for_cpu_fn+0x14/0x20 [<ffffffff920a2e09>] process_one_work+0x149/0x360 [<ffffffff920a3578>] worker_thread+0x1d8/0x3c0 [<ffffffff920a8bb9>] kthread+0x109/0x140 [<ffffffff92751bc5>] ret_from_fork+0x25/0x30 [<ffffffffffffffff>] 0xffffffffffffffff Struct fusion_context may alloc by get_free_pages, which contain pointers to other slab allocations(via megasas_alloc_cmdlist_fusion). Since kmemleak does not track/scan page allocations, the slab objects will be reported as leaks(false positives). This patch adds kmemleak callbacks to allow tracking of such pages. Cc: linux-mm@kvack.org Cc: Shu Wang <shuwang@redhat.com> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- drivers/scsi/megaraid/megaraid_sas_fusion.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 11bd2e6..9a1be45 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -48,6 +48,7 @@ #include <linux/mutex.h> #include <linux/poll.h> #include <linux/vmalloc.h> +#include <linux/kmemleak.h> #include <scsi/scsi.h> #include <scsi/scsi_cmnd.h> @@ -4512,6 +4513,14 @@ void megasas_fusion_ocr_wq(struct work_struct *work) dev_err(&instance->pdev->dev, "Failed from %s %d\n", __func__, __LINE__); return -ENOMEM; } + } else { + /* + * Allow kmemleak to scan these pages as they contain pointers + * to additional allocations via megasas_alloc_cmdlist_fusion. + */ + size_t size = (size_t)PAGE_SIZE << instance->ctrl_context_pages; + + kmemleak_alloc(instance->ctrl_context, size, 1, GFP_KERNEL); } fusion = instance->ctrl_context; @@ -4548,9 +4557,15 @@ void megasas_fusion_ocr_wq(struct work_struct *work) if (is_vmalloc_addr(fusion)) vfree(fusion); - else + else { + /* + * Remove kmemleak object previously allocated in + * megasas_alloc_fusion_context. + */ + kmemleak_free(fusion); free_pages((ulong)fusion, instance->ctrl_context_pages); + } } } -- 1.7.12.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context 2017-10-25 9:57 ` [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context Yisheng Xie @ 2017-10-25 12:36 ` Martin K. Petersen 2017-10-28 0:28 ` Yisheng Xie 0 siblings, 1 reply; 7+ messages in thread From: Martin K. Petersen @ 2017-10-25 12:36 UTC (permalink / raw) To: Yisheng Xie Cc: kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, martin.petersen, megaraidlinux.pdl, linux-scsi, linux-kernel, linux-mm, Shu Wang Yisheng, > I have get many kmemleak reports just similar to commit 70c54e210ee9 > (scsi: megaraid_sas: fix memleak in megasas_alloc_cmdlist_fusion) > on v4.14-rc6, however it seems have a different stroy: Do you still see leaks reported with the megaraid driver update recently merged into 4.15/scsi-queue? -- Martin K. Petersen Oracle Linux Engineering ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context 2017-10-25 12:36 ` Martin K. Petersen @ 2017-10-28 0:28 ` Yisheng Xie 2017-10-31 12:15 ` Martin K. Petersen 0 siblings, 1 reply; 7+ messages in thread From: Yisheng Xie @ 2017-10-28 0:28 UTC (permalink / raw) To: Martin K. Petersen Cc: kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, megaraidlinux.pdl, linux-scsi, linux-kernel, Shu Wang hi Martin , On 2017/10/25 20:36, Martin K. Petersen wrote: > > Yisheng, > >> I have get many kmemleak reports just similar to commit 70c54e210ee9 >> (scsi: megaraid_sas: fix memleak in megasas_alloc_cmdlist_fusion) >> on v4.14-rc6, however it seems have a different stroy: > > Do you still see leaks reported with the megaraid driver update recently > merged into 4.15/scsi-queue? > No, the related code have been optimized and __get_free_pages is not used to allocate fusion_context anymore. So, please ignore this one, and sorry for disturbing. BTW, what about the Patch 1/2, which is just a minor clean up? Thanks Yisheng Xie ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context 2017-10-28 0:28 ` Yisheng Xie @ 2017-10-31 12:15 ` Martin K. Petersen 0 siblings, 0 replies; 7+ messages in thread From: Martin K. Petersen @ 2017-10-31 12:15 UTC (permalink / raw) To: Yisheng Xie Cc: Martin K. Petersen, kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, megaraidlinux.pdl, linux-scsi, linux-kernel, Shu Wang Yisheng, >> Do you still see leaks reported with the megaraid driver update recently >> merged into 4.15/scsi-queue? >> > No, the related code have been optimized and __get_free_pages is not used > to allocate fusion_context anymore. So, please ignore this one, and sorry > for disturbing. > > BTW, what about the Patch 1/2, which is just a minor clean up? Kashyap? Shivasharan? Sumit? -- Martin K. Petersen Oracle Linux Engineering ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds 2017-10-25 9:57 [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Yisheng Xie 2017-10-25 9:57 ` [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context Yisheng Xie @ 2017-10-31 17:36 ` Sumit Saxena 2017-11-03 15:26 ` Martin K. Petersen 2 siblings, 0 replies; 7+ messages in thread From: Sumit Saxena @ 2017-10-31 17:36 UTC (permalink / raw) To: Yisheng Xie, Kashyap Desai, Shivasharan Srikanteshwara, jejb, martin.petersen Cc: PDL,MEGARAIDLINUX, linux-scsi, linux-kernel -----Original Message----- From: Yisheng Xie [mailto:xieyisheng1@huawei.com] Sent: Wednesday, October 25, 2017 3:27 PM To: kashyap.desai@broadcom.com; sumit.saxena@broadcom.com; shivasharan.srikanteshwara@broadcom.com; jejb@linux.vnet.ibm.com; martin.petersen@oracle.com Cc: megaraidlinux.pdl@broadcom.com; linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org; Yisheng Xie Subject: [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds megasas_alloc_cmds is to alloc cmd_list of instance instead of fusion, and fusion is useless in this function. Just remove it. Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- drivers/scsi/megaraid/megaraid_sas_base.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index e518dad..0640168 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -4033,9 +4033,7 @@ int megasas_alloc_cmds(struct megasas_instance *instance) int j; u16 max_cmd; struct megasas_cmd *cmd; - struct fusion_context *fusion; - fusion = instance->ctrl_context; max_cmd = instance->max_mfi_cmds; /* Acked-by: Sumit Saxena <sumit.saxena@broadcom.com> -- 1.7.12.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds 2017-10-25 9:57 [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Yisheng Xie 2017-10-25 9:57 ` [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context Yisheng Xie 2017-10-31 17:36 ` [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Sumit Saxena @ 2017-11-03 15:26 ` Martin K. Petersen 2 siblings, 0 replies; 7+ messages in thread From: Martin K. Petersen @ 2017-11-03 15:26 UTC (permalink / raw) To: Yisheng Xie Cc: kashyap.desai, sumit.saxena, shivasharan.srikanteshwara, jejb, martin.petersen, megaraidlinux.pdl, linux-scsi, linux-kernel Yisheng, > megasas_alloc_cmds is to alloc cmd_list of instance instead of fusion, > and fusion is useless in this function. Just remove it. Applied to 4.15/scsi-queue. -- Martin K. Petersen Oracle Linux Engineering ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-11-03 15:26 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-10-25 9:57 [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Yisheng Xie 2017-10-25 9:57 ` [PATCH 2/2] scsi: megaraid: Track the page allocations for struct fusion_context Yisheng Xie 2017-10-25 12:36 ` Martin K. Petersen 2017-10-28 0:28 ` Yisheng Xie 2017-10-31 12:15 ` Martin K. Petersen 2017-10-31 17:36 ` [PATCH 1/2] scsi: megaraid: Remove redundant code in megasas_alloc_cmds Sumit Saxena 2017-11-03 15:26 ` Martin K. Petersen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).