Re: [PATCH] amd64-agp: fix crash at second module load

From: Florian Mickler
Date: Wed Feb 23 2011 - 03:26:47 EST


Hi Andrew,
I sent this to Dave Airlie because that is what MAINTAINERS says, but
that is probably the wrong receipient?

Regards,
Flo

On Mon, 7 Feb 2011 23:29:31 +0100
Florian Mickler <florian@xxxxxxxxxxx> wrote:

> The module forgot to sometimes unregister some resources.
>
> This fixes Bug #22882.
>
> [Patch updated to 2.6.38-rc3 by Randy Dunlap.]
> Tested-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
> Signed-off-by: Florian Mickler <florian@xxxxxxxxxxx>
> ---
> drivers/char/agp/amd64-agp.c | 9 +++++++--
> 1 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
> index 9252e85..780498d 100644
> --- a/drivers/char/agp/amd64-agp.c
> +++ b/drivers/char/agp/amd64-agp.c
> @@ -773,18 +773,23 @@ int __init agp_amd64_init(void)
> #else
> printk(KERN_INFO PFX "You can boot with agp=try_unsupported\n");
> #endif
> + pci_unregister_driver(&agp_amd64_pci_driver);
> return -ENODEV;
> }
>
> /* First check that we have at least one AMD64 NB */
> - if (!pci_dev_present(amd_nb_misc_ids))
> + if (!pci_dev_present(amd_nb_misc_ids)) {
> + pci_unregister_driver(&agp_amd64_pci_driver);
> return -ENODEV;
> + }
>
> /* Look for any AGP bridge */
> agp_amd64_pci_driver.id_table = agp_amd64_pci_promisc_table;
> err = driver_attach(&agp_amd64_pci_driver.driver);
> - if (err == 0 && agp_bridges_found == 0)
> + if (err == 0 && agp_bridges_found == 0) {
> + pci_unregister_driver(&agp_amd64_pci_driver);
> err = -ENODEV;
> + }
> }
> return err;
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/