1 From a8291be6b5dd465c22af229483dbac543a91e24e Mon Sep 17 00:00:00 2001
2 From: Dan Carpenter <dan.carpenter@linaro.org>
3 Date: Tue, 4 Jul 2023 17:09:09 +0300
4 Subject: Revert "usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init()"
6 From: Dan Carpenter <dan.carpenter@linaro.org>
8 commit a8291be6b5dd465c22af229483dbac543a91e24e upstream.
10 This reverts commit f08aa7c80dac27ee00fa6827f447597d2fba5465.
12 The reverted commit was based on static analysis and a misunderstanding
13 of how PTR_ERR() and NULLs are supposed to work. When a function
14 returns both pointer errors and NULL then normally the NULL means
15 "continue operating without a feature because it was deliberately
16 turned off". The NULL should not be treated as a failure. If a driver
17 cannot work when that feature is disabled then the KConfig should
18 enforce that the function cannot return NULL. We should not need to
21 In this driver, the bug means that probe cannot succeed when CONFIG_PM
24 Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
25 Fixes: f08aa7c80dac ("usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init()")
26 Cc: stable <stable@kernel.org>
27 Link: https://lore.kernel.org/r/ZKQoBa84U/ykEh3C@moroto
28 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
30 drivers/usb/gadget/udc/tegra-xudc.c | 8 ++++----
31 1 file changed, 4 insertions(+), 4 deletions(-)
33 --- a/drivers/usb/gadget/udc/tegra-xudc.c
34 +++ b/drivers/usb/gadget/udc/tegra-xudc.c
35 @@ -3693,15 +3693,15 @@ static int tegra_xudc_powerdomain_init(s
38 xudc->genpd_dev_device = dev_pm_domain_attach_by_name(dev, "dev");
39 - if (IS_ERR_OR_NULL(xudc->genpd_dev_device)) {
40 - err = PTR_ERR(xudc->genpd_dev_device) ? : -ENODATA;
41 + if (IS_ERR(xudc->genpd_dev_device)) {
42 + err = PTR_ERR(xudc->genpd_dev_device);
43 dev_err(dev, "failed to get device power domain: %d\n", err);
47 xudc->genpd_dev_ss = dev_pm_domain_attach_by_name(dev, "ss");
48 - if (IS_ERR_OR_NULL(xudc->genpd_dev_ss)) {
49 - err = PTR_ERR(xudc->genpd_dev_ss) ? : -ENODATA;
50 + if (IS_ERR(xudc->genpd_dev_ss)) {
51 + err = PTR_ERR(xudc->genpd_dev_ss);
52 dev_err(dev, "failed to get SuperSpeed power domain: %d\n", err);