RE: drivers/phy/renesas/phy-rcar-gen3-usb2.c:747 rcar_gen3_phy_usb2_probe() warn: missing error code 'ret'

From: Yoshihiro Shimoda
Date: Fri Jan 05 2024 - 04:17:15 EST


Hello,

> From: Geert Uytterhoeven, Sent: Tuesday, January 2, 2024 11:52 PM
>
> CC Shimoda-san,

Thank you for adding CC to me.

> On Tue, Jan 2, 2024 at 3:03 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> > tree:
<snip URL>
> master
> > head: 3bd7d748816927202268cb335921f7f68b3ca723
> > commit: 8292493c22c8e28b6e67a01e0f5c6db1cf231eb1 riscv: Kconfig.socs: Add ARCH_RENESAS kconfig option
>
> Wrong commit
>
> Fixes: 441a681b8843474c ("phy: rcar-gen3-usb2: fix implementation for
> runtime PM")
>
> > config: riscv-randconfig-r081-20231216
<snip URL>
)
> > compiler: clang version 17.0.0
<snip URL>
> >
> > 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@xxxxxxxxx>
> > | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> > | Closes:
<snip URL>

> >
> > smatch warnings:
> > drivers/phy/renesas/phy-rcar-gen3-usb2.c:747 rcar_gen3_phy_usb2_probe() warn: missing error code 'ret'
> >
> > vim +/ret +747 drivers/phy/renesas/phy-rcar-gen3-usb2.c
> >
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 652 static int
> rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 653 {
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 654 const struct
> rcar_gen3_phy_drv_data *phy_data;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 655 struct device *dev =
> &pdev->dev;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 656 struct rcar_gen3_chan
> *channel;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 657 struct phy_provider
> *provider;
> > 08b0ad375ca661 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2020-07-17 658 int ret = 0, i;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 659
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 660 if (!dev->of_node) {
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 661 dev_err(dev,
> "This driver needs device tree\n");
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 662 return
> -EINVAL;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 663 }
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 664
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 665 channel =
> devm_kzalloc(dev, sizeof(*channel), GFP_KERNEL);
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 666 if (!channel)
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 667 return
> -ENOMEM;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 668
> > 0b5604affbec02 drivers/phy/renesas/phy-rcar-gen3-usb2.c Chunfeng Yun 2020-11-06 669 channel->base =
> devm_platform_ioremap_resource(pdev, 0);
> > 801a69c787812f drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 670 if
> (IS_ERR(channel->base))
> > 801a69c787812f drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 671 return
> PTR_ERR(channel->base);
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 672
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 673
> channel->obint_enable_bits = USB2_OBINT_BITS;
> > 08b0ad375ca661 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2020-07-17 674 /* get irq number here
> and request_irq for OTG in phy_init */
> > 08b0ad375ca661 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2020-07-17 675 channel->irq =
> platform_get_irq_optional(pdev, 0);
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 676 channel->dr_mode =
> rcar_gen3_get_dr_mode(dev->of_node);
> > 73801b90a38ff1 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2018-09-21 677 if
> (channel->dr_mode != USB_DR_MODE_UNKNOWN) {
> > 7e0540f41332cb drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-10-12 678 int ret;
> >
> > I would delete this "ret" declaration.
>
> Agreed.

I got it.

> >
> > 7e0540f41332cb drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-10-12 679
> > 979b519c7a1bff drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2018-09-21 680
> channel->is_otg_channel = true;
> > 8dde0008ffc9e2 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2018-09-21 681
> channel->uses_otg_pins = !of_property_read_bool(dev->of_node,
> > 8dde0008ffc9e2 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2018-09-21 682
> "renesas,no-otg-pins");
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 683
> channel->extcon = devm_extcon_dev_allocate(dev,
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 684
> rcar_gen3_phy_cable);
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 685 if
> (IS_ERR(channel->extcon))
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 686
> return PTR_ERR(channel->extcon);
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 687
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 688 ret =
> devm_extcon_dev_register(dev, channel->extcon);
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 689 if (ret < 0)
> {
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 690
> dev_err(dev, "Failed to register extcon\n");
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 691
> return ret;
> > 2b38543c8db1c7 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-04-29 692 }
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 693 }
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 694
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 695 /*
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 696 * devm_phy_create()
> will call pm_runtime_enable(&phy->dev);
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 697 * And then, phy-core
> will manage runtime pm for this device.
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 698 */
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 699
> pm_runtime_enable(dev);
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 700
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 701 phy_data =
> of_device_get_match_data(dev);
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 702 if (!phy_data) {
> > 51e339deab1e51 drivers/phy/renesas/phy-rcar-gen3-usb2.c Wang Li 2020-11-26 703 ret = -EINVAL;
> > 51e339deab1e51 drivers/phy/renesas/phy-rcar-gen3-usb2.c Wang Li 2020-11-26 704 goto error;
> > 51e339deab1e51 drivers/phy/renesas/phy-rcar-gen3-usb2.c Wang Li 2020-11-26 705 }
> > 5d8042e95fd471 drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2019-04-10 706
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 707
> channel->soc_no_adp_ctrl = phy_data->no_adp_ctrl;
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 708 if
> (phy_data->no_adp_ctrl)
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 709
> channel->obint_enable_bits = USB2_OBINT_IDCHG_EN;
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 710
> > 5c9dc6379f539c drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-06-10 711
> mutex_init(&channel->lock);
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 712 for (i = 0; i <
> NUM_OF_PHYS; i++) {
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 713
> channel->rphys[i].phy = devm_phy_create(dev, NULL,
> > b0512a6ec0cd6d drivers/phy/renesas/phy-rcar-gen3-usb2.c Biju Das 2021-07-27 714
> phy_data->phy_usb2_ops);
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 715 if
> (IS_ERR(channel->rphys[i].phy)) {
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 716
> dev_err(dev, "Failed to create USB2 PHY\n");
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 717 ret
> = PTR_ERR(channel->rphys[i].phy);
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 718 goto
> error;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 719 }
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 720
> channel->rphys[i].ch = channel;
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 721
> channel->rphys[i].int_enable_bits = rcar_gen3_int_enable[i];
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 722
> phy_set_drvdata(channel->rphys[i].phy, &channel->rphys[i]);
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 723 }
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 724
> > 6dcfd7c300bf35 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 725 channel->vbus =
> devm_regulator_get_optional(dev, "vbus");
> > 6dcfd7c300bf35 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 726 if
> (IS_ERR(channel->vbus)) {
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 727 if
> (PTR_ERR(channel->vbus) == -EPROBE_DEFER) {
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 728 ret
> = PTR_ERR(channel->vbus);
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 729 goto
> error;
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 730 }
> > 6dcfd7c300bf35 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 731
> channel->vbus = NULL;
> > 6dcfd7c300bf35 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 732 }
> > 6dcfd7c300bf35 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-03-03 733
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 734
> platform_set_drvdata(pdev, channel);
> > 92fec1c27caa7b drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 735 channel->dev = dev;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 736
> > 549b6b55b00558 drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2019-04-11 737 provider =
> devm_of_phy_provider_register(dev, rcar_gen3_phy_usb2_xlate);
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 738 if (IS_ERR(provider))
> {
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 739 dev_err(dev,
> "Failed to register PHY provider\n");
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 740 ret =
> PTR_ERR(provider);
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 741 goto error;
> > 979b519c7a1bff drivers/phy/renesas/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2018-09-21 742 } else if
> (channel->is_otg_channel) {
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 743 int ret;
> >
> > Shadow ret declaration.

I'll drop this "int ret" too.

> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 744
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 745 ret =
> device_create_file(dev, &dev_attr_role);
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 746 if (ret < 0)
> >
> > The "ret" here is the shadow ret so we end up returning success.
>
> Oops...

I didn't realize that... I'll submit a fixed patch soon.

Best regards,
Yoshihiro Shimoda

> >
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 @747 goto
> error;
> > 9bb86777fb71ee drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2016-11-09 748 }
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 749
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 750 return 0;
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 751
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 752 error:
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 753
> pm_runtime_disable(dev);
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 754
> > 441a681b884347 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2017-03-14 755 return ret;
> > f3b5a8d9b50d71 drivers/phy/phy-rcar-gen3-usb2.c Yoshihiro Shimoda 2015-11-30 756 }
> >
> > --
> > 0-DAY CI Kernel Test Service
> >
> https://github.com/intel/lkp-tests/wiki
> %7Cyoshihiro.shimoda.uh%40renesas.com%7Cd9d9bf8984de40c9a0a708dc0ba268fc%7C53d82571da1947e49cb4625a166a4a2a%7C0%7C0%
> 7C638398039385691700%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30
> 00%7C%7C%7C&sdata=kj00Il5OumUfXxj8E997lUPcxGCmzwdCVwBHG1mdqNY%3D&reserved=0
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds