* [PATCH 0/4] fix leaked of_node references in drivers/media
@ 2019-05-06 7:05 Wen Yang
2019-05-06 7:05 ` [PATCH 1/4] media: venus: firmware: fix leaked of_node references Wen Yang
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Wen Yang @ 2019-05-06 7:05 UTC (permalink / raw)
To: linux-kernel
Cc: wang.yi59, Wen Yang, Mauro Carvalho Chehab, Hans Verkuil,
Laurent Pinchart, Kieran Bingham, Philipp Zabel,
Stanimir Varbanov, linux-media
The call to of_get_cpu_node/of_find_compatible_node/of_parse_phandle...
returns a node pointer with refcount incremented thus it must be
explicitly decremented after the last usage.
We developed a coccinelle SmPL to detect drivers/media/ code and
found some issues.
This patch series fixes those issues.
Wen Yang (4):
media: venus: firmware: fix leaked of_node references
media: mtk-vpu: fix leaked of_node references
media: mtk-vcodec: fix leaked of_node references
media: xilinx: fix leaked of_node references
drivers/media/platform/exynos4-is/fimc-is.c | 1 +
drivers/media/platform/exynos4-is/media-dev.c | 1 +
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 2 +-
drivers/media/platform/mtk-vpu/mtk_vpu.c | 2 +-
drivers/media/platform/qcom/venus/firmware.c | 6 ++++--
drivers/media/platform/xilinx/xilinx-vipp.c | 8 +++++---
6 files changed, 13 insertions(+), 7 deletions(-)
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Cc: linux-media@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
--
2.9.5
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/4] media: venus: firmware: fix leaked of_node references
2019-05-06 7:05 [PATCH 0/4] fix leaked of_node references in drivers/media Wen Yang
@ 2019-05-06 7:05 ` Wen Yang
2019-05-08 11:44 ` Stanimir Varbanov
2019-05-06 7:05 ` [PATCH 2/4] media: mtk-vpu: " Wen Yang
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Wen Yang @ 2019-05-06 7:05 UTC (permalink / raw)
To: linux-kernel
Cc: wang.yi59, Wen Yang, Stanimir Varbanov, Andy Gross, David Brown,
Mauro Carvalho Chehab, linux-media, linux-arm-msm
The call to of_parse_phandle returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.
Detected by coccinelle with the following warnings:
drivers/media/platform/qcom/venus/firmware.c:90:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
drivers/media/platform/qcom/venus/firmware.c:94:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
drivers/media/platform/qcom/venus/firmware.c:128:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Cc: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Cc: Andy Gross <agross@kernel.org>
Cc: David Brown <david.brown@linaro.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-media@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/media/platform/qcom/venus/firmware.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c
index 6cfa802..f81449b 100644
--- a/drivers/media/platform/qcom/venus/firmware.c
+++ b/drivers/media/platform/qcom/venus/firmware.c
@@ -87,11 +87,11 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,
ret = of_address_to_resource(node, 0, &r);
if (ret)
- return ret;
+ goto err_put_node;
ret = request_firmware(&mdt, fwname, dev);
if (ret < 0)
- return ret;
+ goto err_put_node;
fw_size = qcom_mdt_get_size(mdt);
if (fw_size < 0) {
@@ -125,6 +125,8 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,
memunmap(mem_va);
err_release_fw:
release_firmware(mdt);
+err_put_node:
+ of_node_put(node);
return ret;
}
--
2.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] media: mtk-vpu: fix leaked of_node references
2019-05-06 7:05 [PATCH 0/4] fix leaked of_node references in drivers/media Wen Yang
2019-05-06 7:05 ` [PATCH 1/4] media: venus: firmware: fix leaked of_node references Wen Yang
@ 2019-05-06 7:05 ` Wen Yang
2019-05-06 7:05 ` [PATCH 3/4] media: mtk-vcodec: " Wen Yang
2019-05-06 7:05 ` [PATCH 4/4] media: xilinx: " Wen Yang
3 siblings, 0 replies; 7+ messages in thread
From: Wen Yang @ 2019-05-06 7:05 UTC (permalink / raw)
To: linux-kernel
Cc: wang.yi59, Wen Yang, Minghsiu Tsai, Houlong Wei, Andrew-CT Chen,
Tiffany Lin, Mauro Carvalho Chehab, Matthias Brugger,
linux-media, linux-arm-kernel, linux-mediatek
The call to of_parse_phandle returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.
Detected by coccinelle with the following warnings:
drivers/media/platform/mtk-vpu/mtk_vpu.c:477:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 464, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Cc: Minghsiu Tsai <minghsiu.tsai@mediatek.com>
Cc: Houlong Wei <houlong.wei@mediatek.com>
Cc: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
Cc: Tiffany Lin <tiffany.lin@mediatek.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-media@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
drivers/media/platform/mtk-vpu/mtk_vpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
index 46c45f9..97dcb4c 100644
--- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
+++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
@@ -468,9 +468,9 @@ struct platform_device *vpu_get_plat_device(struct platform_device *pdev)
}
vpu_pdev = of_find_device_by_node(vpu_node);
+ of_node_put(vpu_node);
if (WARN_ON(!vpu_pdev)) {
dev_err(dev, "vpu pdev failed\n");
- of_node_put(vpu_node);
return NULL;
}
--
2.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] media: mtk-vcodec: fix leaked of_node references
2019-05-06 7:05 [PATCH 0/4] fix leaked of_node references in drivers/media Wen Yang
2019-05-06 7:05 ` [PATCH 1/4] media: venus: firmware: fix leaked of_node references Wen Yang
2019-05-06 7:05 ` [PATCH 2/4] media: mtk-vpu: " Wen Yang
@ 2019-05-06 7:05 ` Wen Yang
2019-05-06 7:05 ` [PATCH 4/4] media: xilinx: " Wen Yang
3 siblings, 0 replies; 7+ messages in thread
From: Wen Yang @ 2019-05-06 7:05 UTC (permalink / raw)
To: linux-kernel
Cc: wang.yi59, Wen Yang, Tiffany Lin, Andrew-CT Chen,
Mauro Carvalho Chehab, Matthias Brugger, linux-media,
linux-arm-kernel, linux-mediatek
The call to of_find_device_by_node returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.
Detected by coccinelle with the following warnings:
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c:60:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 38, but without a corresponding object release within this function.
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c:63:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 38, but without a corresponding object release within this function.
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c:72:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 38, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Cc: Tiffany Lin <tiffany.lin@mediatek.com>
Cc: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-media@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c
index 7884465..11c45c5 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c
@@ -42,8 +42,8 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev)
}
pdev = of_find_device_by_node(node);
+ of_node_put(node);
if (WARN_ON(!pdev)) {
- of_node_put(node);
return -1;
}
pm->larbvdec = &pdev->dev;
--
2.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] media: xilinx: fix leaked of_node references
2019-05-06 7:05 [PATCH 0/4] fix leaked of_node references in drivers/media Wen Yang
` (2 preceding siblings ...)
2019-05-06 7:05 ` [PATCH 3/4] media: mtk-vcodec: " Wen Yang
@ 2019-05-06 7:05 ` Wen Yang
2019-05-29 8:56 ` Hans Verkuil
3 siblings, 1 reply; 7+ messages in thread
From: Wen Yang @ 2019-05-06 7:05 UTC (permalink / raw)
To: linux-kernel
Cc: wang.yi59, Wen Yang, Patrice Chotard, Hyun Kwon,
Laurent Pinchart, Mauro Carvalho Chehab, Michal Simek,
linux-media, linux-arm-kernel
The call to of_get_child_by_name returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.
Detected by coccinelle with the following warnings:
drivers/media/platform/xilinx/xilinx-vipp.c:487:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 477, but without a corresponding object release within this function.
drivers/media/platform/xilinx/xilinx-vipp.c:491:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 477, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Cc: Patrice Chotard <patrice.chotard@st.com>
Cc: Hyun Kwon <hyun.kwon@xilinx.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: linux-media@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
drivers/media/platform/exynos4-is/fimc-is.c | 1 +
drivers/media/platform/exynos4-is/media-dev.c | 1 +
drivers/media/platform/xilinx/xilinx-vipp.c | 8 +++++---
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c
index 02da0b0..25df4c6 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.c
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
@@ -809,6 +809,7 @@ static int fimc_is_probe(struct platform_device *pdev)
return -ENODEV;
is->pmu_regs = of_iomap(node, 0);
+ of_node_put(node);
if (!is->pmu_regs)
return -ENOMEM;
diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
index 463f2d8..a31dacf 100644
--- a/drivers/media/platform/exynos4-is/media-dev.c
+++ b/drivers/media/platform/exynos4-is/media-dev.c
@@ -450,6 +450,7 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd,
else
pd->fimc_bus_type = pd->sensor_bus_type;
+ of_node_put(np);
if (WARN_ON(index >= ARRAY_SIZE(fmd->sensor))) {
of_node_put(rem);
return -EINVAL;
diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c
index edce040..307717c 100644
--- a/drivers/media/platform/xilinx/xilinx-vipp.c
+++ b/drivers/media/platform/xilinx/xilinx-vipp.c
@@ -472,7 +472,7 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
{
struct device_node *ports;
struct device_node *port;
- int ret;
+ int ret = 0;
ports = of_get_child_by_name(xdev->dev->of_node, "ports");
if (ports == NULL) {
@@ -484,11 +484,13 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
ret = xvip_graph_dma_init_one(xdev, port);
if (ret < 0) {
of_node_put(port);
- return ret;
+ goto out_put_node;
}
}
- return 0;
+out_put_node:
+ of_node_put(ports);
+ return ret;
}
static void xvip_graph_cleanup(struct xvip_composite_device *xdev)
--
2.9.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/4] media: venus: firmware: fix leaked of_node references
2019-05-06 7:05 ` [PATCH 1/4] media: venus: firmware: fix leaked of_node references Wen Yang
@ 2019-05-08 11:44 ` Stanimir Varbanov
0 siblings, 0 replies; 7+ messages in thread
From: Stanimir Varbanov @ 2019-05-08 11:44 UTC (permalink / raw)
To: Wen Yang, linux-kernel
Cc: wang.yi59, Stanimir Varbanov, Andy Gross, David Brown,
Mauro Carvalho Chehab, linux-media, linux-arm-msm
Hi Wen,
Thanks for the patch!
On 5/6/19 10:05 AM, Wen Yang wrote:
> The call to of_parse_phandle returns a node pointer with refcount
> incremented thus it must be explicitly decremented after the last
> usage.
>
> Detected by coccinelle with the following warnings:
> drivers/media/platform/qcom/venus/firmware.c:90:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
> drivers/media/platform/qcom/venus/firmware.c:94:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
> drivers/media/platform/qcom/venus/firmware.c:128:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
>
> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> Cc: Stanimir Varbanov <stanimir.varbanov@linaro.org>
> Cc: Andy Gross <agross@kernel.org>
> Cc: David Brown <david.brown@linaro.org>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: linux-media@vger.kernel.org
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> drivers/media/platform/qcom/venus/firmware.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
>
> diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c
> index 6cfa802..f81449b 100644
> --- a/drivers/media/platform/qcom/venus/firmware.c
> +++ b/drivers/media/platform/qcom/venus/firmware.c
> @@ -87,11 +87,11 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,
>
> ret = of_address_to_resource(node, 0, &r);
> if (ret)
> - return ret;
> + goto err_put_node;
>
> ret = request_firmware(&mdt, fwname, dev);
> if (ret < 0)
> - return ret;
> + goto err_put_node;
>
> fw_size = qcom_mdt_get_size(mdt);
> if (fw_size < 0) {
> @@ -125,6 +125,8 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,
> memunmap(mem_va);
> err_release_fw:
> release_firmware(mdt);
> +err_put_node:
> + of_node_put(node);
> return ret;
> }
>
>
--
regards,
Stan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 4/4] media: xilinx: fix leaked of_node references
2019-05-06 7:05 ` [PATCH 4/4] media: xilinx: " Wen Yang
@ 2019-05-29 8:56 ` Hans Verkuil
0 siblings, 0 replies; 7+ messages in thread
From: Hans Verkuil @ 2019-05-29 8:56 UTC (permalink / raw)
To: Wen Yang, linux-kernel
Cc: wang.yi59, Patrice Chotard, Hyun Kwon, Laurent Pinchart,
Mauro Carvalho Chehab, Michal Simek, linux-media,
linux-arm-kernel
On 5/6/19 9:05 AM, Wen Yang wrote:
> The call to of_get_child_by_name returns a node pointer with refcount
> incremented thus it must be explicitly decremented after the last
> usage.
>
> Detected by coccinelle with the following warnings:
> drivers/media/platform/xilinx/xilinx-vipp.c:487:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 477, but without a corresponding object release within this function.
> drivers/media/platform/xilinx/xilinx-vipp.c:491:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 477, but without a corresponding object release within this function.
>
> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
> Cc: Patrice Chotard <patrice.chotard@st.com>
> Cc: Hyun Kwon <hyun.kwon@xilinx.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Michal Simek <michal.simek@xilinx.com>
> Cc: linux-media@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> ---
> drivers/media/platform/exynos4-is/fimc-is.c | 1 +
> drivers/media/platform/exynos4-is/media-dev.c | 1 +
Huh? This patch changes exynos4 as well, not just xilinx.
Please split this up into two patches, one for each driver.
> drivers/media/platform/xilinx/xilinx-vipp.c | 8 +++++---
> 3 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c
> index 02da0b0..25df4c6 100644
> --- a/drivers/media/platform/exynos4-is/fimc-is.c
> +++ b/drivers/media/platform/exynos4-is/fimc-is.c
> @@ -809,6 +809,7 @@ static int fimc_is_probe(struct platform_device *pdev)
> return -ENODEV;
>
> is->pmu_regs = of_iomap(node, 0);
> + of_node_put(node);
> if (!is->pmu_regs)
> return -ENOMEM;
>
> diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
> index 463f2d8..a31dacf 100644
> --- a/drivers/media/platform/exynos4-is/media-dev.c
> +++ b/drivers/media/platform/exynos4-is/media-dev.c
> @@ -450,6 +450,7 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd,
> else
> pd->fimc_bus_type = pd->sensor_bus_type;
>
> + of_node_put(np);
> if (WARN_ON(index >= ARRAY_SIZE(fmd->sensor))) {
> of_node_put(rem);
> return -EINVAL;
> diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c
> index edce040..307717c 100644
> --- a/drivers/media/platform/xilinx/xilinx-vipp.c
> +++ b/drivers/media/platform/xilinx/xilinx-vipp.c
> @@ -472,7 +472,7 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
> {
> struct device_node *ports;
> struct device_node *port;
> - int ret;
> + int ret = 0;
>
> ports = of_get_child_by_name(xdev->dev->of_node, "ports");
> if (ports == NULL) {
> @@ -484,11 +484,13 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
> ret = xvip_graph_dma_init_one(xdev, port);
> if (ret < 0) {
> of_node_put(port);
> - return ret;
> + goto out_put_node;
Just do a break here,
> }
> }
>
> - return 0;
> +out_put_node:
and drop this label.
> + of_node_put(ports);
> + return ret;
> }
>
> static void xvip_graph_cleanup(struct xvip_composite_device *xdev)
>
Regards,
Hans
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-05-29 8:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-06 7:05 [PATCH 0/4] fix leaked of_node references in drivers/media Wen Yang
2019-05-06 7:05 ` [PATCH 1/4] media: venus: firmware: fix leaked of_node references Wen Yang
2019-05-08 11:44 ` Stanimir Varbanov
2019-05-06 7:05 ` [PATCH 2/4] media: mtk-vpu: " Wen Yang
2019-05-06 7:05 ` [PATCH 3/4] media: mtk-vcodec: " Wen Yang
2019-05-06 7:05 ` [PATCH 4/4] media: xilinx: " Wen Yang
2019-05-29 8:56 ` Hans Verkuil
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).