fix pci_get_device conversion in intel-agp
PATCH 1/1 fix pci_get_device conversion in intel-agp
- any device teardown must happen between agp_remove_bridge and agp_put_bridge, before agp_remove_bridge users can still call into the code
- it's releasing a reference to the wrong device
drivers/char/agp/intel-agp.c +11 -3
@@ -1720,8 +1720,13 @@ {struct agp_bridge_data *bridge =pci_get_drvdata (pdev); -pci_dev_put (pdev);agp_remove_bridge (bridge); + +if (intel_i810_private.i810_dev) +pci_dev_put (intel_i810_private.i830_dev); +if (intel_i810_private.i830_dev) +pci_dev_put (intel_i830_private.i830_dev); +agp_put_bridge (bridge); } --- 1.18/drivers/char/agp/intel-mch-agp.c 2004-12-16 07:31:44 +01:00 +++ edited/drivers/char/agp/intel-mch-agp.c 2005-01-08 20:12:18 +01:00
@@ -569,8 +569,11 @@ {struct agp_bridge_data *bridge =pci_get_drvdata (pdev); -pci_dev_put (pdev);agp_remove_bridge (bridge); + +if (intel_i810_private.i830_dev) +pci_dev_put (intel_i830_private.i830_dev); +agp_put_bridge (bridge); }
drivers/char/agp/intel-agp.c line 1728
Quoted 4 lines
drivers/char/agp/intel-agp.c +4
-0+if (intel_i810_private.i810_dev) +pci_dev_put (intel_i810_private.i830_dev); +if (intel_i810_private.i830_dev) +pci_dev_put (intel_i830_private.i830_dev);
Is there a typo in the patch here -- should the first put be for i810_dev?
- R.
Quoted 6 lines · Roland Dreier
drivers/char/agp/intel-agp.c line 1728
Quoted 4 lines
drivers/char/agp/intel-agp.c +4
-0+if (intel_i810_private.i810_dev) +pci_dev_put (intel_i810_private.i830_dev); +if (intel_i810_private.i830_dev) +pci_dev_put (intel_i830_private.i830_dev);Is there a typo in the patch here -- should the first put be for
i810_dev?
Yes.
drivers/char/agp/intel-agp.c line 1728
Quoted 4 lines · Christoph Hellwig
drivers/char/agp/intel-agp.c +4
-0+if (intel_i810_private.i810_dev) +pci_dev_put (intel_i810_private.i830_dev); +if (intel_i810_private.i830_dev) +pci_dev_put (intel_i830_private.i830_dev);
It's legal to call pci_dev_put() with a NULL pointer, so these checks are not needed.
thanks,
greg k-h