From: Jiri Slaby <jirislaby@kernel.org>
To: kernel-janitors@vger.kernel.org
Subject: Re: [bug report] tty: cyclades, cache HW version
Date: Thu, 25 Jun 2020 08:57:46 +0000 [thread overview]
Message-ID: <f83c673e-0046-47b6-97b8-0aab80c85a9c@kernel.org> (raw)
In-Reply-To: <20200624131858.GA9972@mwanda>
Hi,
On 24. 06. 20, 15:18, Dan Carpenter wrote:
> [ Kees recently removed the uninitialized_var() variable so ancient
> code has started to print warnings. GCC doesn't warn about
> uninitialized variables these days either. It's been buggy for
> 10 years so it's probably not an emergency. -dan ]
>
> Hello Jiri Slaby,
>
> The patch 101b81590d8d: "tty: cyclades, cache HW version" from Jun
> 11, 2009, leads to the following static checker warning:
>
> drivers/tty/cyclades.c:3805 cy_pci_probe()
> error: uninitialized symbol 'mailbox'.
>
> drivers/tty/cyclades.c
> 3640 static int cy_pci_probe(struct pci_dev *pdev,
> 3641 const struct pci_device_id *ent)
> 3642 {
> 3643 struct cyclades_card *card;
> 3644 void __iomem *addr0 = NULL, *addr2 = NULL;
> 3645 char *card_name = NULL;
> 3646 u32 mailbox;
> ^^^^^^^^^^^^
>
> 3647 unsigned int device_id, nchan = 0, card_no, i, j;
> 3648 unsigned char plx_ver;
> 3649 int retval, irq;
> 3650
> 3651 retval = pci_enable_device(pdev);
> 3652 if (retval) {
> 3653 dev_err(&pdev->dev, "cannot enable device\n");
> 3654 goto err;
> 3655 }
> 3656
> 3657 /* read PCI configuration area */
> 3658 irq = pdev->irq;
> 3659 device_id = pdev->device & ~PCI_DEVICE_ID_MASK;
It looks like you and/or your analyzer missed this line ^^?
> 3660
> 3661 #if defined(__alpha__)
> 3662 if (device_id = PCI_DEVICE_ID_CYCLOM_Y_Lo) { /* below 1M? */
> 3663 dev_err(&pdev->dev, "Cyclom-Y/PCI not supported for low "
> 3664 "addresses on Alpha systems.\n");
> 3665 retval = -EIO;
> 3666 goto err_dis;
> 3667 }
> 3668 #endif
> 3669 if (device_id = PCI_DEVICE_ID_CYCLOM_Z_Lo) {
> 3670 dev_err(&pdev->dev, "Cyclades-Z/PCI not supported for low "
> 3671 "addresses\n");
> 3672 retval = -EIO;
> 3673 goto err_dis;
> 3674 }
> 3675
> 3676 if (pci_resource_flags(pdev, 2) & IORESOURCE_IO) {
> 3677 dev_warn(&pdev->dev, "PCI I/O bit incorrectly set. Ignoring "
> 3678 "it...\n");
> 3679 pdev->resource[2].flags &= ~IORESOURCE_IO;
> 3680 }
> 3681
> 3682 retval = pci_request_regions(pdev, "cyclades");
> 3683 if (retval) {
> 3684 dev_err(&pdev->dev, "failed to reserve resources\n");
> 3685 goto err_dis;
> 3686 }
> 3687
> 3688 retval = -EIO;
> 3689 if (device_id = PCI_DEVICE_ID_CYCLOM_Y_Lo ||
> 3690 device_id = PCI_DEVICE_ID_CYCLOM_Y_Hi) {
> 3691 card_name = "Cyclom-Y";
> 3692
> 3693 addr0 = ioremap(pci_resource_start(pdev, 0),
> 3694 CyPCI_Yctl);
> 3695 if (addr0 = NULL) {
> 3696 dev_err(&pdev->dev, "can't remap ctl region\n");
> 3697 goto err_reg;
> 3698 }
> 3699 addr2 = ioremap(pci_resource_start(pdev, 2),
> 3700 CyPCI_Ywin);
> 3701 if (addr2 = NULL) {
> 3702 dev_err(&pdev->dev, "can't remap base region\n");
> 3703 goto err_unmap;
> 3704 }
> 3705
> 3706 nchan = CyPORTS_PER_CHIP * cyy_init_card(addr2, 1);
> 3707 if (nchan = 0) {
> 3708 dev_err(&pdev->dev, "Cyclom-Y PCI host card with no "
> 3709 "Serial-Modules\n");
> 3710 goto err_unmap;
> 3711 }
> 3712 } else if (device_id = PCI_DEVICE_ID_CYCLOM_Z_Hi) {
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> 3713 struct RUNTIME_9060 __iomem *ctl_addr;
> 3714
> 3715 ctl_addr = addr0 = ioremap(pci_resource_start(pdev, 0),
> 3716 CyPCI_Zctl);
> 3717 if (addr0 = NULL) {
> 3718 dev_err(&pdev->dev, "can't remap ctl region\n");
> 3719 goto err_reg;
> 3720 }
> 3721
> 3722 /* Disable interrupts on the PLX before resetting it */
> 3723 cy_writew(&ctl_addr->intr_ctrl_stat,
> 3724 readw(&ctl_addr->intr_ctrl_stat) & ~0x0900);
> 3725
> 3726 plx_init(pdev, irq, addr0);
> 3727
> 3728 mailbox = readl(&ctl_addr->mail_box_0);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Only initialized for PCI_DEVICE_ID_CYCLOM_Z_Hi.
>
> 3729
> 3730 addr2 = ioremap(pci_resource_start(pdev, 2),
> 3731 mailbox = ZE_V1 ? CyPCI_Ze_win : CyPCI_Zwin);
> 3732 if (addr2 = NULL) {
> 3733 dev_err(&pdev->dev, "can't remap base region\n");
> 3734 goto err_unmap;
> 3735 }
> 3736
> 3737 if (mailbox = ZE_V1) {
> 3738 card_name = "Cyclades-Ze";
> 3739 } else {
> 3740 card_name = "Cyclades-8Zo";
> 3741 #ifdef CY_PCI_DEBUG
> 3742 if (mailbox = ZO_V1) {
> 3743 cy_writel(&ctl_addr->loc_addr_base, WIN_CREG);
> 3744 dev_info(&pdev->dev, "Cyclades-8Zo/PCI: FPGA "
> 3745 "id %lx, ver %lx\n", (ulong)(0xff &
> 3746 readl(&((struct CUSTOM_REG *)addr2)->
> 3747 fpga_id)), (ulong)(0xff &
> 3748 readl(&((struct CUSTOM_REG *)addr2)->
> 3749 fpga_version)));
> 3750 cy_writel(&ctl_addr->loc_addr_base, WIN_RAM);
> 3751 } else {
> 3752 dev_info(&pdev->dev, "Cyclades-Z/PCI: New "
> 3753 "Cyclades-Z board. FPGA not loaded\n");
> 3754 }
> 3755 #endif
> 3756 /* The following clears the firmware id word. This
> 3757 ensures that the driver will not attempt to talk to
> 3758 the board until it has been properly initialized.
> 3759 */
> 3760 if ((mailbox = ZO_V1) || (mailbox = ZO_V2))
> 3761 cy_writel(addr2 + ID_ADDRESS, 0L);
> 3762 }
> 3763
> 3764 retval = cyz_load_fw(pdev, addr2, addr0, irq);
> 3765 if (retval <= 0)
> 3766 goto err_unmap;
> 3767 nchan = retval;
> 3768 }
> 3769
> 3770 if ((cy_next_channel + nchan) > NR_PORTS) {
> 3771 dev_err(&pdev->dev, "Cyclades-8Zo/PCI found, but no "
> 3772 "channels are available. Change NR_PORTS in "
> 3773 "cyclades.c and recompile kernel.\n");
> 3774 goto err_unmap;
> 3775 }
> 3776 /* fill the next cy_card structure available */
> 3777 for (card_no = 0; card_no < NR_CARDS; card_no++) {
> 3778 card = &cy_card[card_no];
> 3779 if (card->base_addr = NULL)
> 3780 break;
> 3781 }
> 3782 if (card_no = NR_CARDS) { /* no more cy_cards available */
> 3783 dev_err(&pdev->dev, "Cyclades-8Zo/PCI found, but no "
> 3784 "more cards can be used. Change NR_CARDS in "
> 3785 "cyclades.c and recompile kernel.\n");
> 3786 goto err_unmap;
> 3787 }
> 3788
> 3789 if (device_id = PCI_DEVICE_ID_CYCLOM_Y_Lo ||
> 3790 device_id = PCI_DEVICE_ID_CYCLOM_Y_Hi) {
> 3791 /* allocate IRQ */
> 3792 retval = request_irq(irq, cyy_interrupt,
> 3793 IRQF_SHARED, "Cyclom-Y", card);
> 3794 if (retval) {
> 3795 dev_err(&pdev->dev, "could not allocate IRQ\n");
> 3796 goto err_unmap;
> 3797 }
> 3798 card->num_chips = nchan / CyPORTS_PER_CHIP;
> 3799 } else {
>
> There are several other PCI devices besides PCI_DEVICE_ID_CYCLOM_Z_Hi.
>
> 3800 struct FIRM_ID __iomem *firm_id = addr2 + ID_ADDRESS;
> 3801 struct ZFW_CTRL __iomem *zfw_ctrl;
> 3802
> 3803 zfw_ctrl = addr2 + (readl(&firm_id->zfwctrl_addr) & 0xfffff);
> 3804
> 3805 card->hw_ver = mailbox;
> ^^^^^^^
> Uninitialized.
thanks,
--
js
next prev parent reply other threads:[~2020-06-25 8:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-24 13:18 [bug report] tty: cyclades, cache HW version Dan Carpenter
2020-06-25 8:57 ` Jiri Slaby [this message]
2020-06-25 16:36 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f83c673e-0046-47b6-97b8-0aab80c85a9c@kernel.org \
--to=jirislaby@kernel.org \
--cc=kernel-janitors@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).