Lines Matching refs:shared
1629 struct phy_package_shared *shared; in phy_package_join() local
1636 shared = bus->shared[addr]; in phy_package_join()
1637 if (!shared) { in phy_package_join()
1639 shared = kzalloc(sizeof(*shared), GFP_KERNEL); in phy_package_join()
1640 if (!shared) in phy_package_join()
1643 shared->priv = kzalloc(priv_size, GFP_KERNEL); in phy_package_join()
1644 if (!shared->priv) in phy_package_join()
1646 shared->priv_size = priv_size; in phy_package_join()
1648 shared->addr = addr; in phy_package_join()
1649 refcount_set(&shared->refcnt, 1); in phy_package_join()
1650 bus->shared[addr] = shared; in phy_package_join()
1653 if (priv_size && priv_size != shared->priv_size) in phy_package_join()
1655 refcount_inc(&shared->refcnt); in phy_package_join()
1659 phydev->shared = shared; in phy_package_join()
1664 kfree(shared); in phy_package_join()
1681 struct phy_package_shared *shared = phydev->shared; in phy_package_leave() local
1684 if (!shared) in phy_package_leave()
1687 if (refcount_dec_and_mutex_lock(&shared->refcnt, &bus->shared_lock)) { in phy_package_leave()
1688 bus->shared[shared->addr] = NULL; in phy_package_leave()
1690 kfree(shared->priv); in phy_package_leave()
1691 kfree(shared); in phy_package_leave()
1694 phydev->shared = NULL; in phy_package_leave()