Skip to contentSkip to conversation

FAILED: patch "[PATCH] drm/mediatek: fix OF sibling-node lookup" failed to apply to 4.9-stable tree

PATCH [email protected] 3 participants 5 messages Nov 12, 2018 – Dec 6, 2018

Subsystems (4)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

Quoted 1 line

From ceff2f4dcd44abf35864d9a99f85ac619e89a01d Mon Sep 17 00:00:00 2001

From: Johan Hovold <[email protected]>
Date: Mon, 27 Aug 2018 10:21:46 +0200
Subject: [PATCH] drm/mediatek: fix OF sibling-node lookup

Use the new of_get_compatible_child() helper to lookup the sibling instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-sibling) node.

This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the parent device node).

While at it, also fix the related cec-node reference leak.

Fixes 8f83f26891e1 ("drm/mediatek: Add HDMI support")
Cc stable <[email protected]> # 4.8
Cc Junzhi Zhao <[email protected]>
Cc Philipp Zabel <[email protected]>
Cc David Airlie <[email protected]>
drivers/gpu/drm/mediatek/mtk_hdmi.c +3 -2
index 2d45d1dd9554..643f5edd68fe 100644
@@ -1446,8 +1446,7 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	}
 
 	/* The CEC module handles HDMI hotplug detection */
-	cec_np = of_find_compatible_node(np->parent, NULL,
-					 "mediatek,mt8173-cec");
+	cec_np = of_get_compatible_child(np->parent, "mediatek,mt8173-cec");
 	if (!cec_np) {
 		dev_err(dev, "Failed to find CEC node\n");
 		return -EINVAL;
@@ -1457,8 +1456,10 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	if (!cec_pdev) {
 		dev_err(hdmi->dev, "Waiting for CEC device %pOF\n",
 			cec_np);
+		of_node_put(cec_np);
 		return -EPROBE_DEFER;
 	}
+	of_node_put(cec_np);
 	hdmi->cec_dev = &cec_pdev->dev;
 
 	/*
#1 lore raw
Quoted 5 lines · Greg Kroah-Hartman

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

This one also depends on

36156f9241cb ("of: add helper to lookup compatible child node")

Johan

Quoted 53 lines

------------------ original commit in Linus's tree ------------------

From ceff2f4dcd44abf35864d9a99f85ac619e89a01d Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Mon, 27 Aug 2018 10:21:46 +0200
Subject: [PATCH] drm/mediatek: fix OF sibling-node lookup

Use the new of_get_compatible_child() helper to lookup the sibling instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-sibling) node.

This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the parent device node).

While at it, also fix the related cec-node reference leak.

Fixes 8f83f26891e1 ("drm/mediatek: Add HDMI support")
Cc stable <[email protected]> # 4.8
Cc Junzhi Zhao <[email protected]>
Cc Philipp Zabel <[email protected]>
Cc David Airlie <[email protected]>
drivers/gpu/drm/mediatek/mtk_hdmi.c +3 -2
index 2d45d1dd9554..643f5edd68fe 100644
@@ -1446,8 +1446,7 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	}
 
 	/* The CEC module handles HDMI hotplug detection */
-	cec_np = of_find_compatible_node(np->parent, NULL,
-					 "mediatek,mt8173-cec");
+	cec_np = of_get_compatible_child(np->parent, "mediatek,mt8173-cec");
 	if (!cec_np) {
 		dev_err(dev, "Failed to find CEC node\n");
 		return -EINVAL;
@@ -1457,8 +1456,10 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	if (!cec_pdev) {
 		dev_err(hdmi->dev, "Waiting for CEC device %pOF\n",
 			cec_np);
+		of_node_put(cec_np);
 		return -EPROBE_DEFER;
 	}
+	of_node_put(cec_np);
 	hdmi->cec_dev = &cec_pdev->dev;
 
 	/*
maintainer
#2 lore raw
Quoted 10 lines · Johan Hovold
Quoted 5 lines · Greg Kroah-Hartman

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

This one also depends on

36156f9241cb ("of: add helper to lookup compatible child node")

It seems to have more dependencies for 4.9.

--
Thanks,
Sasha

#3 lore raw
Quoted 8 lines · Sasha Levin
Quoted 7 lines · Johan Hovold
Quoted 5 lines · Greg Kroah-Hartman

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Quoted 5 lines
Quoted 3 lines

This one also depends on

36156f9241cb ("of: add helper to lookup compatible child node")

It seems to have more dependencies for 4.9.

Apparently just a trivial context change due to 4bf99144d2b4 ("drm:
Convert to using %pOF instead of full_name").

Compile-tested backport below.

Johan

Quoted 1 line

From 25904658b8a0975376a9118cfc07f5f3ebb1ea34 Mon Sep 17 00:00:00 2001

From: Johan Hovold <[email protected]>
Date: Mon, 27 Aug 2018 10:21:46 +0200
Subject: [PATCH] drm/mediatek: fix OF sibling-node lookup

commit ceff2f4dcd44abf35864d9a99f85ac619e89a01d upstream.

Use the new of_get_compatible_child() helper to lookup the sibling instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-sibling) node.

This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the parent device node).

While at it, also fix the related cec-node reference leak.

Fixes 8f83f26891e1 ("drm/mediatek: Add HDMI support")
Cc stable <[email protected]> # 4.8
Cc Junzhi Zhao <[email protected]>
Cc Philipp Zabel <[email protected]>
Cc David Airlie <[email protected]>
[ johan: backport to 4.9 ]
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/gpu/drm/mediatek/mtk_hdmi.c +3 -2
index e097780752f6..863d030786e5 100644
@@ -1446,8 +1446,7 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	}
 
 	/* The CEC module handles HDMI hotplug detection */
-	cec_np = of_find_compatible_node(np->parent, NULL,
-					 "mediatek,mt8173-cec");
+	cec_np = of_get_compatible_child(np->parent, "mediatek,mt8173-cec");
 	if (!cec_np) {
 		dev_err(dev, "Failed to find CEC node\n");
 		return -EINVAL;
@@ -1457,8 +1456,10 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
 	if (!cec_pdev) {
 		dev_err(hdmi->dev, "Waiting for CEC device %s\n",
 			cec_np->full_name);
+		of_node_put(cec_np);
 		return -EPROBE_DEFER;
 	}
+	of_node_put(cec_np);
 	hdmi->cec_dev = &cec_pdev->dev;
 
 	/*
Signature · 1 line
2.19.2
author maintainer
#4 lore raw
Quoted 11 lines · Johan Hovold
Quoted 10 lines · Sasha Levin
Quoted 9 lines · Johan Hovold
Quoted 5 lines · Greg Kroah-Hartman

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

This one also depends on

Quoted 8 lines
Quoted 3 lines
Quoted 1 line

36156f9241cb ("of: add helper to lookup compatible child node")

It seems to have more dependencies for 4.9.

Apparently just a trivial context change due to 4bf99144d2b4 ("drm:
Convert to using %pOF instead of full_name").

Compile-tested backport below.

Now applied, thanks.

greg k-h