* [PATCH 1/1] powerpc: fix a memory leak
@ 2023-09-14 9:46 Yuanjun Gong
2023-09-14 16:10 ` Tyrel Datwyler
0 siblings, 1 reply; 6+ messages in thread
From: Yuanjun Gong @ 2023-09-14 9:46 UTC (permalink / raw)
To: Michael Ellerman, Nicholas Piggin, Christophe Leroy, linuxppc-dev,
linux-kernel
Cc: Yuanjun Gong
When one of the methods xive_native_alloc_irq_on_chip, irq_create_mapping
or irq_get_handler_data fails, the function will directly return without
disposing vinst->name and vinst. Fix it.
Fixes: c20e1e299d93 ("powerpc/vas: Alloc and setup IRQ and trigger port address")
Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
---
arch/powerpc/platforms/powernv/vas.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/vas.c b/arch/powerpc/platforms/powernv/vas.c
index b65256a63e87..780740b478f0 100644
--- a/arch/powerpc/platforms/powernv/vas.c
+++ b/arch/powerpc/platforms/powernv/vas.c
@@ -54,7 +54,7 @@ static int init_vas_instance(struct platform_device *pdev)
struct xive_irq_data *xd;
uint32_t chipid, hwirq;
struct resource *res;
- int rc, cpu, vasid;
+ int rc, cpu, vasid, ret;
rc = of_property_read_u32(dn, "ibm,vas-id", &vasid);
if (rc) {
@@ -102,6 +102,7 @@ static int init_vas_instance(struct platform_device *pdev)
res = &pdev->resource[3];
if (res->end > 62) {
pr_err("Bad 'paste_win_id_shift' in DT, %llx\n", res->end);
+ ret = -ENODEV
goto free_vinst;
}
@@ -111,21 +112,24 @@ static int init_vas_instance(struct platform_device *pdev)
if (!hwirq) {
pr_err("Inst%d: Unable to allocate global irq for chip %d\n",
vinst->vas_id, chipid);
- return -ENOENT;
+ ret = -ENOENT;
+ goto free_vinst;
}
vinst->virq = irq_create_mapping(NULL, hwirq);
if (!vinst->virq) {
pr_err("Inst%d: Unable to map global irq %d\n",
vinst->vas_id, hwirq);
- return -EINVAL;
+ ret = -EINVAL;
+ goto free_vinst;
}
xd = irq_get_handler_data(vinst->virq);
if (!xd) {
pr_err("Inst%d: Invalid virq %d\n",
vinst->vas_id, vinst->virq);
- return -EINVAL;
+ ret = -EINVAL;
+ goto free_vinst;
}
vinst->irq_port = xd->trig_page;
@@ -168,7 +172,7 @@ static int init_vas_instance(struct platform_device *pdev)
free_vinst:
kfree(vinst->name);
kfree(vinst);
- return -ENODEV;
+ return ret;
}
--
2.37.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] powerpc: fix a memory leak
2023-09-14 9:46 [PATCH 1/1] powerpc: fix a memory leak Yuanjun Gong
@ 2023-09-14 16:10 ` Tyrel Datwyler
2023-09-15 0:50 ` Michael Ellerman
2023-09-15 2:05 ` [PATCH v2 " Yuanjun Gong
0 siblings, 2 replies; 6+ messages in thread
From: Tyrel Datwyler @ 2023-09-14 16:10 UTC (permalink / raw)
To: Yuanjun Gong, Michael Ellerman, Nicholas Piggin, Christophe Leroy,
linuxppc-dev, linux-kernel
On 9/14/23 02:46, Yuanjun Gong wrote:
> When one of the methods xive_native_alloc_irq_on_chip, irq_create_mapping
> or irq_get_handler_data fails, the function will directly return without
> disposing vinst->name and vinst. Fix it.
>
> Fixes: c20e1e299d93 ("powerpc/vas: Alloc and setup IRQ and trigger port address")
> Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
> ---
> arch/powerpc/platforms/powernv/vas.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/arch/powerpc/platforms/powernv/vas.c b/arch/powerpc/platforms/powernv/vas.c
> index b65256a63e87..780740b478f0 100644
> --- a/arch/powerpc/platforms/powernv/vas.c
> +++ b/arch/powerpc/platforms/powernv/vas.c
> @@ -54,7 +54,7 @@ static int init_vas_instance(struct platform_device *pdev)
> struct xive_irq_data *xd;
> uint32_t chipid, hwirq;
> struct resource *res;
> - int rc, cpu, vasid;
> + int rc, cpu, vasid, ret;
You can you reuse rc for the return value in the error path instead of
introducing a new ret variable.
-Tyrel
>
> rc = of_property_read_u32(dn, "ibm,vas-id", &vasid);
> if (rc) {
> @@ -102,6 +102,7 @@ static int init_vas_instance(struct platform_device *pdev)
> res = &pdev->resource[3];
> if (res->end > 62) {
> pr_err("Bad 'paste_win_id_shift' in DT, %llx\n", res->end);
> + ret = -ENODEV
> goto free_vinst;
> }
>
> @@ -111,21 +112,24 @@ static int init_vas_instance(struct platform_device *pdev)
> if (!hwirq) {
> pr_err("Inst%d: Unable to allocate global irq for chip %d\n",
> vinst->vas_id, chipid);
> - return -ENOENT;
> + ret = -ENOENT;
> + goto free_vinst;
> }
>
> vinst->virq = irq_create_mapping(NULL, hwirq);
> if (!vinst->virq) {
> pr_err("Inst%d: Unable to map global irq %d\n",
> vinst->vas_id, hwirq);
> - return -EINVAL;
> + ret = -EINVAL;
> + goto free_vinst;
> }
>
> xd = irq_get_handler_data(vinst->virq);
> if (!xd) {
> pr_err("Inst%d: Invalid virq %d\n",
> vinst->vas_id, vinst->virq);
> - return -EINVAL;
> + ret = -EINVAL;
> + goto free_vinst;
> }
>
> vinst->irq_port = xd->trig_page;
> @@ -168,7 +172,7 @@ static int init_vas_instance(struct platform_device *pdev)
> free_vinst:
> kfree(vinst->name);
> kfree(vinst);
> - return -ENODEV;
> + return ret;
>
> }
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] powerpc: fix a memory leak
2023-09-14 16:10 ` Tyrel Datwyler
@ 2023-09-15 0:50 ` Michael Ellerman
2023-09-15 2:05 ` [PATCH v2 " Yuanjun Gong
1 sibling, 0 replies; 6+ messages in thread
From: Michael Ellerman @ 2023-09-15 0:50 UTC (permalink / raw)
To: Tyrel Datwyler, Yuanjun Gong, Nicholas Piggin, Christophe Leroy,
linuxppc-dev, linux-kernel
Tyrel Datwyler <tyreld@linux.ibm.com> writes:
> On 9/14/23 02:46, Yuanjun Gong wrote:
>> When one of the methods xive_native_alloc_irq_on_chip, irq_create_mapping
>> or irq_get_handler_data fails, the function will directly return without
>> disposing vinst->name and vinst. Fix it.
>>
>> Fixes: c20e1e299d93 ("powerpc/vas: Alloc and setup IRQ and trigger port address")
>> Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
>> ---
>> arch/powerpc/platforms/powernv/vas.c | 14 +++++++++-----
>> 1 file changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/powerpc/platforms/powernv/vas.c b/arch/powerpc/platforms/powernv/vas.c
>> index b65256a63e87..780740b478f0 100644
>> --- a/arch/powerpc/platforms/powernv/vas.c
>> +++ b/arch/powerpc/platforms/powernv/vas.c
>> @@ -54,7 +54,7 @@ static int init_vas_instance(struct platform_device *pdev)
>> struct xive_irq_data *xd;
>> uint32_t chipid, hwirq;
>> struct resource *res;
>> - int rc, cpu, vasid;
>> + int rc, cpu, vasid, ret;
>
> You can you reuse rc for the return value in the error path instead of
> introducing a new ret variable.
Yep, please send a v2.
cheers
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] powerpc: fix a memory leak
2023-09-14 16:10 ` Tyrel Datwyler
2023-09-15 0:50 ` Michael Ellerman
@ 2023-09-15 2:05 ` Yuanjun Gong
2023-09-24 1:18 ` kernel test robot
2023-11-08 9:24 ` kernel test robot
1 sibling, 2 replies; 6+ messages in thread
From: Yuanjun Gong @ 2023-09-15 2:05 UTC (permalink / raw)
To: tyreld; +Cc: linux-kernel, Yuanjun Gong, npiggin, linuxppc-dev
When one of the methods xive_native_alloc_irq_on_chip, irq_create_mapping
or irq_get_handler_data fails, the function will directly return without
disposing vinst->name and vinst. Fix it.
Fixes: c20e1e299d93 ("powerpc/vas: Alloc and setup IRQ and trigger port address")
Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
---
arch/powerpc/platforms/powernv/vas.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/vas.c b/arch/powerpc/platforms/powernv/vas.c
index b65256a63e87..40cb7a03d180 100644
--- a/arch/powerpc/platforms/powernv/vas.c
+++ b/arch/powerpc/platforms/powernv/vas.c
@@ -102,6 +102,7 @@ static int init_vas_instance(struct platform_device *pdev)
res = &pdev->resource[3];
if (res->end > 62) {
pr_err("Bad 'paste_win_id_shift' in DT, %llx\n", res->end);
+ rc = -ENODEV
goto free_vinst;
}
@@ -111,21 +112,24 @@ static int init_vas_instance(struct platform_device *pdev)
if (!hwirq) {
pr_err("Inst%d: Unable to allocate global irq for chip %d\n",
vinst->vas_id, chipid);
- return -ENOENT;
+ rc = -ENOENT;
+ goto free_vinst;
}
vinst->virq = irq_create_mapping(NULL, hwirq);
if (!vinst->virq) {
pr_err("Inst%d: Unable to map global irq %d\n",
vinst->vas_id, hwirq);
- return -EINVAL;
+ rc = -EINVAL;
+ goto free_vinst;
}
xd = irq_get_handler_data(vinst->virq);
if (!xd) {
pr_err("Inst%d: Invalid virq %d\n",
vinst->vas_id, vinst->virq);
- return -EINVAL;
+ rc = -EINVAL;
+ goto free_vinst;
}
vinst->irq_port = xd->trig_page;
@@ -168,7 +172,7 @@ static int init_vas_instance(struct platform_device *pdev)
free_vinst:
kfree(vinst->name);
kfree(vinst);
- return -ENODEV;
+ return rc;
}
--
2.37.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/1] powerpc: fix a memory leak
2023-09-15 2:05 ` [PATCH v2 " Yuanjun Gong
@ 2023-09-24 1:18 ` kernel test robot
2023-11-08 9:24 ` kernel test robot
1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2023-09-24 1:18 UTC (permalink / raw)
To: Yuanjun Gong, tyreld
Cc: linux-kernel, npiggin, Yuanjun Gong, oe-kbuild-all, linuxppc-dev
Hi Yuanjun,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.6-rc2 next-20230921]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Yuanjun-Gong/powerpc-fix-a-memory-leak/20230915-100832
base: linus/master
patch link: https://lore.kernel.org/r/20230915020559.3396566-1-ruc_gongyuanjun%40163.com
patch subject: [PATCH v2 1/1] powerpc: fix a memory leak
config: powerpc-powernv_defconfig (https://download.01.org/0day-ci/archive/20230924/202309240954.1H3G2rpy-lkp@intel.com/config)
compiler: powerpc64le-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230924/202309240954.1H3G2rpy-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309240954.1H3G2rpy-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/powerpc/platforms/powernv/vas.c: In function 'init_vas_instance':
>> arch/powerpc/platforms/powernv/vas.c:106:17: error: expected ';' before 'goto'
106 | goto free_vinst;
| ^~~~
vim +106 arch/powerpc/platforms/powernv/vas.c
0d17de03ce6a7a Haren Myneni 2020-04-15 49
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 50 static int init_vas_instance(struct platform_device *pdev)
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 51 {
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 52 struct device_node *dn = pdev->dev.of_node;
c20e1e299d936c Haren Myneni 2020-04-15 53 struct vas_instance *vinst;
c20e1e299d936c Haren Myneni 2020-04-15 54 struct xive_irq_data *xd;
c20e1e299d936c Haren Myneni 2020-04-15 55 uint32_t chipid, hwirq;
c20e1e299d936c Haren Myneni 2020-04-15 56 struct resource *res;
c20e1e299d936c Haren Myneni 2020-04-15 57 int rc, cpu, vasid;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 58
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 59 rc = of_property_read_u32(dn, "ibm,vas-id", &vasid);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 60 if (rc) {
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 61 pr_err("No ibm,vas-id property for %s?\n", pdev->name);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 62 return -ENODEV;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 63 }
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 64
c20e1e299d936c Haren Myneni 2020-04-15 65 rc = of_property_read_u32(dn, "ibm,chip-id", &chipid);
c20e1e299d936c Haren Myneni 2020-04-15 66 if (rc) {
c20e1e299d936c Haren Myneni 2020-04-15 67 pr_err("No ibm,chip-id property for %s?\n", pdev->name);
c20e1e299d936c Haren Myneni 2020-04-15 68 return -ENODEV;
c20e1e299d936c Haren Myneni 2020-04-15 69 }
c20e1e299d936c Haren Myneni 2020-04-15 70
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 71 if (pdev->num_resources != 4) {
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 72 pr_err("Unexpected DT configuration for [%s, %d]\n",
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 73 pdev->name, vasid);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 74 return -ENODEV;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 75 }
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 76
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 77 vinst = kzalloc(sizeof(*vinst), GFP_KERNEL);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 78 if (!vinst)
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 79 return -ENOMEM;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 80
9dd31b11370380 Cédric Le Goater 2020-12-12 81 vinst->name = kasprintf(GFP_KERNEL, "vas-%d", vasid);
9dd31b11370380 Cédric Le Goater 2020-12-12 82 if (!vinst->name) {
9dd31b11370380 Cédric Le Goater 2020-12-12 83 kfree(vinst);
9dd31b11370380 Cédric Le Goater 2020-12-12 84 return -ENOMEM;
9dd31b11370380 Cédric Le Goater 2020-12-12 85 }
9dd31b11370380 Cédric Le Goater 2020-12-12 86
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 87 INIT_LIST_HEAD(&vinst->node);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 88 ida_init(&vinst->ida);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 89 mutex_init(&vinst->mutex);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 90 vinst->vas_id = vasid;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 91 vinst->pdev = pdev;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 92
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 93 res = &pdev->resource[0];
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 94 vinst->hvwc_bar_start = res->start;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 95
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 96 res = &pdev->resource[1];
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 97 vinst->uwc_bar_start = res->start;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 98
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 99 res = &pdev->resource[2];
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 100 vinst->paste_base_addr = res->start;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 101
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 102 res = &pdev->resource[3];
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 103 if (res->end > 62) {
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 104 pr_err("Bad 'paste_win_id_shift' in DT, %llx\n", res->end);
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 105 rc = -ENODEV
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 @106 goto free_vinst;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 107 }
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 108
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 109 vinst->paste_win_id_shift = 63 - res->end;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 110
c20e1e299d936c Haren Myneni 2020-04-15 111 hwirq = xive_native_alloc_irq_on_chip(chipid);
c20e1e299d936c Haren Myneni 2020-04-15 112 if (!hwirq) {
c20e1e299d936c Haren Myneni 2020-04-15 113 pr_err("Inst%d: Unable to allocate global irq for chip %d\n",
c20e1e299d936c Haren Myneni 2020-04-15 114 vinst->vas_id, chipid);
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 115 rc = -ENOENT;
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 116 goto free_vinst;
c20e1e299d936c Haren Myneni 2020-04-15 117 }
c20e1e299d936c Haren Myneni 2020-04-15 118
c20e1e299d936c Haren Myneni 2020-04-15 119 vinst->virq = irq_create_mapping(NULL, hwirq);
c20e1e299d936c Haren Myneni 2020-04-15 120 if (!vinst->virq) {
c20e1e299d936c Haren Myneni 2020-04-15 121 pr_err("Inst%d: Unable to map global irq %d\n",
c20e1e299d936c Haren Myneni 2020-04-15 122 vinst->vas_id, hwirq);
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 123 rc = -EINVAL;
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 124 goto free_vinst;
c20e1e299d936c Haren Myneni 2020-04-15 125 }
c20e1e299d936c Haren Myneni 2020-04-15 126
c20e1e299d936c Haren Myneni 2020-04-15 127 xd = irq_get_handler_data(vinst->virq);
c20e1e299d936c Haren Myneni 2020-04-15 128 if (!xd) {
c20e1e299d936c Haren Myneni 2020-04-15 129 pr_err("Inst%d: Invalid virq %d\n",
c20e1e299d936c Haren Myneni 2020-04-15 130 vinst->vas_id, vinst->virq);
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 131 rc = -EINVAL;
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 132 goto free_vinst;
c20e1e299d936c Haren Myneni 2020-04-15 133 }
c20e1e299d936c Haren Myneni 2020-04-15 134
c20e1e299d936c Haren Myneni 2020-04-15 135 vinst->irq_port = xd->trig_page;
c20e1e299d936c Haren Myneni 2020-04-15 136 pr_devel("Initialized instance [%s, %d] paste_base 0x%llx paste_win_id_shift 0x%llx IRQ %d Port 0x%llx\n",
c20e1e299d936c Haren Myneni 2020-04-15 137 pdev->name, vasid, vinst->paste_base_addr,
c20e1e299d936c Haren Myneni 2020-04-15 138 vinst->paste_win_id_shift, vinst->virq,
c20e1e299d936c Haren Myneni 2020-04-15 139 vinst->irq_port);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 140
ca03258b6b338b Sukadev Bhattiprolu 2017-11-07 141 for_each_possible_cpu(cpu) {
ca03258b6b338b Sukadev Bhattiprolu 2017-11-07 142 if (cpu_to_chip_id(cpu) == of_get_ibm_chip_id(dn))
ca03258b6b338b Sukadev Bhattiprolu 2017-11-07 143 per_cpu(cpu_vas_id, cpu) = vasid;
ca03258b6b338b Sukadev Bhattiprolu 2017-11-07 144 }
ca03258b6b338b Sukadev Bhattiprolu 2017-11-07 145
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 146 mutex_lock(&vas_mutex);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 147 list_add(&vinst->node, &vas_instances);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 148 mutex_unlock(&vas_mutex);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 149
9774628acf8640 Haren Myneni 2020-04-15 150 spin_lock_init(&vinst->fault_lock);
0d17de03ce6a7a Haren Myneni 2020-04-15 151 /*
0d17de03ce6a7a Haren Myneni 2020-04-15 152 * IRQ and fault handling setup is needed only for user space
0d17de03ce6a7a Haren Myneni 2020-04-15 153 * send windows.
0d17de03ce6a7a Haren Myneni 2020-04-15 154 */
0d17de03ce6a7a Haren Myneni 2020-04-15 155 if (vinst->virq) {
0d17de03ce6a7a Haren Myneni 2020-04-15 156 rc = vas_irq_fault_window_setup(vinst);
0d17de03ce6a7a Haren Myneni 2020-04-15 157 /*
0d17de03ce6a7a Haren Myneni 2020-04-15 158 * Fault window is used only for user space send windows.
0d17de03ce6a7a Haren Myneni 2020-04-15 159 * So if vinst->virq is NULL, tx_win_open returns -ENODEV
0d17de03ce6a7a Haren Myneni 2020-04-15 160 * for user space.
0d17de03ce6a7a Haren Myneni 2020-04-15 161 */
0d17de03ce6a7a Haren Myneni 2020-04-15 162 if (rc)
0d17de03ce6a7a Haren Myneni 2020-04-15 163 vinst->virq = 0;
0d17de03ce6a7a Haren Myneni 2020-04-15 164 }
0d17de03ce6a7a Haren Myneni 2020-04-15 165
ece4e51291485b Sukadev Bhattiprolu 2017-11-07 166 vas_instance_init_dbgdir(vinst);
ece4e51291485b Sukadev Bhattiprolu 2017-11-07 167
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 168 dev_set_drvdata(&pdev->dev, vinst);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 169
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 170 return 0;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 171
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 172 free_vinst:
9dd31b11370380 Cédric Le Goater 2020-12-12 173 kfree(vinst->name);
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 174 kfree(vinst);
1e5daa4a4c0658 Yuanjun Gong 2023-09-15 175 return rc;
4dea2d1a927c61 Sukadev Bhattiprolu 2017-08-28 176
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/1] powerpc: fix a memory leak
2023-09-15 2:05 ` [PATCH v2 " Yuanjun Gong
2023-09-24 1:18 ` kernel test robot
@ 2023-11-08 9:24 ` kernel test robot
1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2023-11-08 9:24 UTC (permalink / raw)
To: Yuanjun Gong, tyreld
Cc: llvm, linux-kernel, Yuanjun Gong, npiggin, oe-kbuild-all,
linuxppc-dev
Hi Yuanjun,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.6 next-20231108]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Yuanjun-Gong/powerpc-fix-a-memory-leak/20230915-100832
base: linus/master
patch link: https://lore.kernel.org/r/20230915020559.3396566-1-ruc_gongyuanjun%40163.com
patch subject: [PATCH v2 1/1] powerpc: fix a memory leak
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20231108/202311081645.j68Cla77-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231108/202311081645.j68Cla77-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311081645.j68Cla77-lkp@intel.com/
All errors (new ones prefixed by >>):
>> arch/powerpc/platforms/powernv/vas.c:105:15: error: expected ';' after expression
105 | rc = -ENODEV
| ^
| ;
1 error generated.
vim +105 arch/powerpc/platforms/powernv/vas.c
49
50 static int init_vas_instance(struct platform_device *pdev)
51 {
52 struct device_node *dn = pdev->dev.of_node;
53 struct vas_instance *vinst;
54 struct xive_irq_data *xd;
55 uint32_t chipid, hwirq;
56 struct resource *res;
57 int rc, cpu, vasid;
58
59 rc = of_property_read_u32(dn, "ibm,vas-id", &vasid);
60 if (rc) {
61 pr_err("No ibm,vas-id property for %s?\n", pdev->name);
62 return -ENODEV;
63 }
64
65 rc = of_property_read_u32(dn, "ibm,chip-id", &chipid);
66 if (rc) {
67 pr_err("No ibm,chip-id property for %s?\n", pdev->name);
68 return -ENODEV;
69 }
70
71 if (pdev->num_resources != 4) {
72 pr_err("Unexpected DT configuration for [%s, %d]\n",
73 pdev->name, vasid);
74 return -ENODEV;
75 }
76
77 vinst = kzalloc(sizeof(*vinst), GFP_KERNEL);
78 if (!vinst)
79 return -ENOMEM;
80
81 vinst->name = kasprintf(GFP_KERNEL, "vas-%d", vasid);
82 if (!vinst->name) {
83 kfree(vinst);
84 return -ENOMEM;
85 }
86
87 INIT_LIST_HEAD(&vinst->node);
88 ida_init(&vinst->ida);
89 mutex_init(&vinst->mutex);
90 vinst->vas_id = vasid;
91 vinst->pdev = pdev;
92
93 res = &pdev->resource[0];
94 vinst->hvwc_bar_start = res->start;
95
96 res = &pdev->resource[1];
97 vinst->uwc_bar_start = res->start;
98
99 res = &pdev->resource[2];
100 vinst->paste_base_addr = res->start;
101
102 res = &pdev->resource[3];
103 if (res->end > 62) {
104 pr_err("Bad 'paste_win_id_shift' in DT, %llx\n", res->end);
> 105 rc = -ENODEV
106 goto free_vinst;
107 }
108
109 vinst->paste_win_id_shift = 63 - res->end;
110
111 hwirq = xive_native_alloc_irq_on_chip(chipid);
112 if (!hwirq) {
113 pr_err("Inst%d: Unable to allocate global irq for chip %d\n",
114 vinst->vas_id, chipid);
115 rc = -ENOENT;
116 goto free_vinst;
117 }
118
119 vinst->virq = irq_create_mapping(NULL, hwirq);
120 if (!vinst->virq) {
121 pr_err("Inst%d: Unable to map global irq %d\n",
122 vinst->vas_id, hwirq);
123 rc = -EINVAL;
124 goto free_vinst;
125 }
126
127 xd = irq_get_handler_data(vinst->virq);
128 if (!xd) {
129 pr_err("Inst%d: Invalid virq %d\n",
130 vinst->vas_id, vinst->virq);
131 rc = -EINVAL;
132 goto free_vinst;
133 }
134
135 vinst->irq_port = xd->trig_page;
136 pr_devel("Initialized instance [%s, %d] paste_base 0x%llx paste_win_id_shift 0x%llx IRQ %d Port 0x%llx\n",
137 pdev->name, vasid, vinst->paste_base_addr,
138 vinst->paste_win_id_shift, vinst->virq,
139 vinst->irq_port);
140
141 for_each_possible_cpu(cpu) {
142 if (cpu_to_chip_id(cpu) == of_get_ibm_chip_id(dn))
143 per_cpu(cpu_vas_id, cpu) = vasid;
144 }
145
146 mutex_lock(&vas_mutex);
147 list_add(&vinst->node, &vas_instances);
148 mutex_unlock(&vas_mutex);
149
150 spin_lock_init(&vinst->fault_lock);
151 /*
152 * IRQ and fault handling setup is needed only for user space
153 * send windows.
154 */
155 if (vinst->virq) {
156 rc = vas_irq_fault_window_setup(vinst);
157 /*
158 * Fault window is used only for user space send windows.
159 * So if vinst->virq is NULL, tx_win_open returns -ENODEV
160 * for user space.
161 */
162 if (rc)
163 vinst->virq = 0;
164 }
165
166 vas_instance_init_dbgdir(vinst);
167
168 dev_set_drvdata(&pdev->dev, vinst);
169
170 return 0;
171
172 free_vinst:
173 kfree(vinst->name);
174 kfree(vinst);
175 return rc;
176
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-11-08 9:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-14 9:46 [PATCH 1/1] powerpc: fix a memory leak Yuanjun Gong
2023-09-14 16:10 ` Tyrel Datwyler
2023-09-15 0:50 ` Michael Ellerman
2023-09-15 2:05 ` [PATCH v2 " Yuanjun Gong
2023-09-24 1:18 ` kernel test robot
2023-11-08 9:24 ` kernel test robot
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).