From: David Miller <davem@xxxxxxxxxxxxx> Date: Thu, 22 Dec 2011 14:15:37 -0500 (EST) > It looks like populate_msi_sysfs() is where these kobjects are > supposed to be initialized. Ok, it looks like we violate the invariant the free_msi_irqs() should only be invoked after populate_msi_sysfs() has successfully been run. For example, in msix_capability_init(), if arch_setup_msi_irqs() fails we will branch to "error" and do free_msi_irqs(). free_msi_irqs() unconditionally does puts on the MSI entry kobjects, but we haven't initialized them in populate_msi_sysfs() and thus we get the warnings. Even if we did execute populate_msi_sysfs(), if that function encountered an error part way through the MSI entry list, we'll still hit this kobject_put() warning for the MSI entrys we did not process and init. In my case arch_setup_msi_irqs() is failing simply because MSI has not been enabled on these PCI host bridges. It should, and I'm trying to figure out if this is some strange interaction with the new resource code. But this is independent of the above bugs that can result in erroneous kobject puts. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html