Re: [PATCH 6/9] perf: Generic pci uncore device support

From: Peter Zijlstra
Date: Thu May 03 2012 - 17:46:49 EST


On Wed, 2012-05-02 at 10:07 +0800, Yan, Zheng wrote:
> +static void __devexit uncore_pci_remove(struct pci_dev *pdev)
> +{
> + struct intel_uncore_box *box = pci_get_drvdata(pdev);
> + int phyid = pcibus_to_phyid[pdev->bus->number];
> +
> + if (WARN_ON_ONCE(phyid != box->phy_id))
> + return;
> +
> + box->pci_dev = NULL;
> + if (--box->refcnt == 0) {

This appears completely unserialized (as is all the refcnt stuff in
patch 4 it seems), now I figure the only way to actually have this pci
device go away is by hotplug, which is serialized. Still looks very odd.

> + spin_lock(&uncore_pci_lock);
> + hlist_del_rcu(&box->hlist);
> + spin_unlock(&uncore_pci_lock);
> + kfree_rcu(box, rcu_head);
> + }
> +}
--
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/