Message ID | 20221108213718.32076-1-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | Deferred |
Headers | show |
Series | clk: samsung: Revert "clk: samsung: exynos-clkout: Use of_device_get_match_data()" | expand |
On 08/11/2022 22:37, Marek Szyprowski wrote: > of_device_get_match_data() function should not be used on the device > other than the one matched to the given driver, because it always returns > the match_data of the matched driver. In case of exynos-clkout driver, > the code matched the OF IDs on the PARENT device, so replacing it with > of_device_get_match_data() broke the driver. > > This reverts commit 777aaf3d1daf793461269b49c063aca1cee06a44. This was untested, automated commit and there were several other like that from Minghao. Other driver owners should check if they have the same issue. I made a quick look and seems fine, but it all depends what was the of_device_get_match_data() argument. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Please add Cc-stable tag. Do reverts need a Fixes tag? I guess as well... > --- > drivers/clk/samsung/clk-exynos-clkout.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > Best regards, Krzysztof
On 08.11.2022 22:44, Krzysztof Kozlowski wrote: > On 08/11/2022 22:37, Marek Szyprowski wrote: >> of_device_get_match_data() function should not be used on the device >> other than the one matched to the given driver, because it always returns >> the match_data of the matched driver. In case of exynos-clkout driver, >> the code matched the OF IDs on the PARENT device, so replacing it with >> of_device_get_match_data() broke the driver. >> >> This reverts commit 777aaf3d1daf793461269b49c063aca1cee06a44. > This was untested, automated commit and there were several other like > that from Minghao. Other driver owners should check if they have the > same issue. I made a quick look and seems fine, but it all depends what > was the of_device_get_match_data() argument. > >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > Please add Cc-stable tag. Do reverts need a Fixes tag? I guess as well... Do we really need a CC-stable tag? v6.1-rc1 is the first release that contains that bug, so this revert imho should be simply applied as a fix for v6.1-rcX cycle. Best regards
On 08/11/2022 23:53, Marek Szyprowski wrote: > On 08.11.2022 22:44, Krzysztof Kozlowski wrote: >> On 08/11/2022 22:37, Marek Szyprowski wrote: >>> of_device_get_match_data() function should not be used on the device >>> other than the one matched to the given driver, because it always returns >>> the match_data of the matched driver. In case of exynos-clkout driver, >>> the code matched the OF IDs on the PARENT device, so replacing it with >>> of_device_get_match_data() broke the driver. >>> >>> This reverts commit 777aaf3d1daf793461269b49c063aca1cee06a44. >> This was untested, automated commit and there were several other like >> that from Minghao. Other driver owners should check if they have the >> same issue. I made a quick look and seems fine, but it all depends what >> was the of_device_get_match_data() argument. >> >>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> >> Please add Cc-stable tag. Do reverts need a Fixes tag? I guess as well... > > Do we really need a CC-stable tag? v6.1-rc1 is the first release that > contains that bug, so this revert imho should be simply applied as a fix > for v6.1-rcX cycle. No, then it's fine. Stephen, can you take it directly to fixes for current RC? Fixes: 777aaf3d1daf ("clk: samsung: exynos-clkout: Use of_device_get_match_data()") Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof
On 09/11/2022 10:14, Krzysztof Kozlowski wrote: > On 08/11/2022 23:53, Marek Szyprowski wrote: >> On 08.11.2022 22:44, Krzysztof Kozlowski wrote: >>> On 08/11/2022 22:37, Marek Szyprowski wrote: >>>> of_device_get_match_data() function should not be used on the device >>>> other than the one matched to the given driver, because it always returns >>>> the match_data of the matched driver. In case of exynos-clkout driver, >>>> the code matched the OF IDs on the PARENT device, so replacing it with >>>> of_device_get_match_data() broke the driver. >>>> >>>> This reverts commit 777aaf3d1daf793461269b49c063aca1cee06a44. >>> This was untested, automated commit and there were several other like >>> that from Minghao. Other driver owners should check if they have the >>> same issue. I made a quick look and seems fine, but it all depends what >>> was the of_device_get_match_data() argument. >>> >>>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> >>> Please add Cc-stable tag. Do reverts need a Fixes tag? I guess as well... >> >> Do we really need a CC-stable tag? v6.1-rc1 is the first release that >> contains that bug, so this revert imho should be simply applied as a fix >> for v6.1-rcX cycle. > > No, then it's fine. > I applied it. Best regards, Krzysztof
diff --git a/drivers/clk/samsung/clk-exynos-clkout.c b/drivers/clk/samsung/clk-exynos-clkout.c index 273f77d54dab..e6d6cbf8c4e6 100644 --- a/drivers/clk/samsung/clk-exynos-clkout.c +++ b/drivers/clk/samsung/clk-exynos-clkout.c @@ -81,17 +81,19 @@ MODULE_DEVICE_TABLE(of, exynos_clkout_ids); static int exynos_clkout_match_parent_dev(struct device *dev, u32 *mux_mask) { const struct exynos_clkout_variant *variant; + const struct of_device_id *match; if (!dev->parent) { dev_err(dev, "not instantiated from MFD\n"); return -EINVAL; } - variant = of_device_get_match_data(dev->parent); - if (!variant) { + match = of_match_device(exynos_clkout_ids, dev->parent); + if (!match) { dev_err(dev, "cannot match parent device\n"); return -EINVAL; } + variant = match->data; *mux_mask = variant->mux_mask;
of_device_get_match_data() function should not be used on the device other than the one matched to the given driver, because it always returns the match_data of the matched driver. In case of exynos-clkout driver, the code matched the OF IDs on the PARENT device, so replacing it with of_device_get_match_data() broke the driver. This reverts commit 777aaf3d1daf793461269b49c063aca1cee06a44. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/clk/samsung/clk-exynos-clkout.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)