On Mon, 29 Feb 2016 14:41:34 +0800, Navy Cheng said:
> pci_unregister_driver() should be used once dgnc module exit. It has
> nothing to do with dgnc_NumBoards. Remove the judgment of dgnc_NumBoards to
> avoid pci_unregister_driver() is not used when dgnc_NumBoards is 0.

> -     if (dgnc_NumBoards)
> -             pci_unregister_driver(&dgnc_driver);
> +     pci_unregister_driver(&dgnc_driver);

Does pci_unregister_driver do the right thing if there are 0 boards
in the system?

If this logic is wrong, shouldn't there also be a patch fixing the
following in dgnc_init_module()?

        /*
         * Find and configure all the cards
         */
        rc = pci_register_driver(&dgnc_driver);

        /*
         * If something went wrong in the scan, bail out of driver.
         */
        if (rc < 0) {
                /* Only unregister if it was actually registered. */
                if (dgnc_NumBoards)
                        pci_unregister_driver(&dgnc_driver);
                else
                        pr_warn("WARNING: dgnc driver load failed.  No Digi Neo 
or Classic boards found.\n");

                dgnc_cleanup_module();

While I'm at it, the entire NumBoards counting seems to be wonky - it looks
like a *lot* of off-by-one errors.  Looks like the programmer(s) weren't sure
if they wanted to use that as a zero-based or one-based counter/index.

Attachment: pgp5lBlSHOm1G.pgp
Description: PGP signature

_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to