Skip to content

Commit

Permalink
net: rename reference+tracking helpers
Browse files Browse the repository at this point in the history
Netdev reference helpers have a dev_ prefix for historic
reasons. Renaming the old helpers would be too much churn
but we can rename the tracking ones which are relatively
recent and should be the default for new code.

Rename:
 dev_hold_track()    -> netdev_hold()
 dev_put_track()     -> netdev_put()
 dev_replace_track() -> netdev_ref_replace()

Link: https://lore.kernel.org/r/20220608043955.919359-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Jakub Kicinski committed Jun 10, 2022
1 parent a98a62e commit d62607c
Show file tree
Hide file tree
Showing 48 changed files with 141 additions and 137 deletions.
4 changes: 2 additions & 2 deletions drivers/net/eql.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave)
list_del(&slave->list);
queue->num_slaves--;
slave->dev->flags &= ~IFF_SLAVE;
dev_put_track(slave->dev, &slave->dev_tracker);
netdev_put(slave->dev, &slave->dev_tracker);
kfree(slave);
}

Expand Down Expand Up @@ -399,7 +399,7 @@ static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave)
if (duplicate_slave)
eql_kill_one_slave(queue, duplicate_slave);

dev_hold_track(slave->dev, &slave->dev_tracker, GFP_ATOMIC);
netdev_hold(slave->dev, &slave->dev_tracker, GFP_ATOMIC);
list_add(&slave->list, &queue->all_slaves);
queue->num_slaves++;
slave->dev->flags |= IFF_SLAVE;
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/macsec.c
Original file line number Diff line number Diff line change
Expand Up @@ -3462,7 +3462,7 @@ static int macsec_dev_init(struct net_device *dev)
memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len);

/* Get macsec's reference to real_dev */
dev_hold_track(real_dev, &macsec->dev_tracker, GFP_KERNEL);
netdev_hold(real_dev, &macsec->dev_tracker, GFP_KERNEL);

return 0;
}
Expand Down Expand Up @@ -3710,7 +3710,7 @@ static void macsec_free_netdev(struct net_device *dev)
free_percpu(macsec->secy.tx_sc.stats);

/* Get rid of the macsec's reference to real_dev */
dev_put_track(macsec->real_dev, &macsec->dev_tracker);
netdev_put(macsec->real_dev, &macsec->dev_tracker);
}

static void macsec_setup(struct net_device *dev)
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/macvlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -915,7 +915,7 @@ static int macvlan_init(struct net_device *dev)
port->count += 1;

/* Get macvlan's reference to lowerdev */
dev_hold_track(lowerdev, &vlan->dev_tracker, GFP_KERNEL);
netdev_hold(lowerdev, &vlan->dev_tracker, GFP_KERNEL);

return 0;
}
Expand Down Expand Up @@ -1185,7 +1185,7 @@ static void macvlan_dev_free(struct net_device *dev)
struct macvlan_dev *vlan = netdev_priv(dev);

/* Get rid of the macvlan's reference to lowerdev */
dev_put_track(vlan->lowerdev, &vlan->dev_tracker);
netdev_put(vlan->lowerdev, &vlan->dev_tracker);
}

void macvlan_common_setup(struct net_device *dev)
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/netconsole.c
Original file line number Diff line number Diff line change
Expand Up @@ -721,7 +721,7 @@ static int netconsole_netdev_event(struct notifier_block *this,
__netpoll_cleanup(&nt->np);

spin_lock_irqsave(&target_list_lock, flags);
dev_put_track(nt->np.dev, &nt->np.dev_tracker);
netdev_put(nt->np.dev, &nt->np.dev_tracker);
nt->np.dev = NULL;
nt->enabled = false;
stopped = true;
Expand Down
8 changes: 4 additions & 4 deletions drivers/net/vrf.c
Original file line number Diff line number Diff line change
Expand Up @@ -814,8 +814,8 @@ static void vrf_rt6_release(struct net_device *dev, struct net_vrf *vrf)
*/
if (rt6) {
dst = &rt6->dst;
dev_replace_track(dst->dev, net->loopback_dev,
&dst->dev_tracker, GFP_KERNEL);
netdev_ref_replace(dst->dev, net->loopback_dev,
&dst->dev_tracker, GFP_KERNEL);
dst->dev = net->loopback_dev;
dst_release(dst);
}
Expand Down Expand Up @@ -1061,8 +1061,8 @@ static void vrf_rtable_release(struct net_device *dev, struct net_vrf *vrf)
*/
if (rth) {
dst = &rth->dst;
dev_replace_track(dst->dev, net->loopback_dev,
&dst->dev_tracker, GFP_KERNEL);
netdev_ref_replace(dst->dev, net->loopback_dev,
&dst->dev_tracker, GFP_KERNEL);
dst->dev = net->loopback_dev;
dst_release(dst);
}
Expand Down
24 changes: 12 additions & 12 deletions include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -3981,17 +3981,17 @@ static inline void netdev_tracker_free(struct net_device *dev,
#endif
}

static inline void dev_hold_track(struct net_device *dev,
netdevice_tracker *tracker, gfp_t gfp)
static inline void netdev_hold(struct net_device *dev,
netdevice_tracker *tracker, gfp_t gfp)
{
if (dev) {
__dev_hold(dev);
__netdev_tracker_alloc(dev, tracker, gfp);
}
}

static inline void dev_put_track(struct net_device *dev,
netdevice_tracker *tracker)
static inline void netdev_put(struct net_device *dev,
netdevice_tracker *tracker)
{
if (dev) {
netdev_tracker_free(dev, tracker);
Expand All @@ -4004,29 +4004,29 @@ static inline void dev_put_track(struct net_device *dev,
* @dev: network device
*
* Hold reference to device to keep it from being freed.
* Try using dev_hold_track() instead.
* Try using netdev_hold() instead.
*/
static inline void dev_hold(struct net_device *dev)
{
dev_hold_track(dev, NULL, GFP_ATOMIC);
netdev_hold(dev, NULL, GFP_ATOMIC);
}

/**
* dev_put - release reference to device
* @dev: network device
*
* Release reference to device to allow it to be freed.
* Try using dev_put_track() instead.
* Try using netdev_put() instead.
*/
static inline void dev_put(struct net_device *dev)
{
dev_put_track(dev, NULL);
netdev_put(dev, NULL);
}

static inline void dev_replace_track(struct net_device *odev,
struct net_device *ndev,
netdevice_tracker *tracker,
gfp_t gfp)
static inline void netdev_ref_replace(struct net_device *odev,
struct net_device *ndev,
netdevice_tracker *tracker,
gfp_t gfp)
{
if (odev)
netdev_tracker_free(odev, tracker);
Expand Down
2 changes: 1 addition & 1 deletion include/net/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -1923,7 +1923,7 @@ static inline void xfrm_dev_state_free(struct xfrm_state *x)
if (dev->xfrmdev_ops->xdo_dev_state_free)
dev->xfrmdev_ops->xdo_dev_state_free(x);
xso->dev = NULL;
dev_put_track(dev, &xso->dev_tracker);
netdev_put(dev, &xso->dev_tracker);
}
}
#else
Expand Down
4 changes: 2 additions & 2 deletions net/8021q/vlan_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ static int vlan_dev_init(struct net_device *dev)
return -ENOMEM;

/* Get vlan's reference to real_dev */
dev_hold_track(real_dev, &vlan->dev_tracker, GFP_KERNEL);
netdev_hold(real_dev, &vlan->dev_tracker, GFP_KERNEL);

return 0;
}
Expand Down Expand Up @@ -852,7 +852,7 @@ static void vlan_dev_free(struct net_device *dev)
vlan->vlan_pcpu_stats = NULL;

/* Get rid of the vlan's reference to real_dev */
dev_put_track(vlan->real_dev, &vlan->dev_tracker);
netdev_put(vlan->real_dev, &vlan->dev_tracker);
}

void vlan_setup(struct net_device *dev)
Expand Down
7 changes: 4 additions & 3 deletions net/ax25/af_ax25.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@ static void ax25_kill_by_device(struct net_device *dev)
ax25_disconnect(s, ENETUNREACH);
s->ax25_dev = NULL;
if (sk->sk_socket) {
dev_put_track(ax25_dev->dev, &ax25_dev->dev_tracker);
netdev_put(ax25_dev->dev,
&ax25_dev->dev_tracker);
ax25_dev_put(ax25_dev);
}
ax25_cb_del(s);
Expand Down Expand Up @@ -1065,7 +1066,7 @@ static int ax25_release(struct socket *sock)
del_timer_sync(&ax25->t3timer);
del_timer_sync(&ax25->idletimer);
}
dev_put_track(ax25_dev->dev, &ax25_dev->dev_tracker);
netdev_put(ax25_dev->dev, &ax25_dev->dev_tracker);
ax25_dev_put(ax25_dev);
}

Expand Down Expand Up @@ -1146,7 +1147,7 @@ static int ax25_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)

if (ax25_dev) {
ax25_fillin_cb(ax25, ax25_dev);
dev_hold_track(ax25_dev->dev, &ax25_dev->dev_tracker, GFP_ATOMIC);
netdev_hold(ax25_dev->dev, &ax25_dev->dev_tracker, GFP_ATOMIC);
}

done:
Expand Down
6 changes: 3 additions & 3 deletions net/ax25/ax25_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ void ax25_dev_device_up(struct net_device *dev)
refcount_set(&ax25_dev->refcount, 1);
dev->ax25_ptr = ax25_dev;
ax25_dev->dev = dev;
dev_hold_track(dev, &ax25_dev->dev_tracker, GFP_ATOMIC);
netdev_hold(dev, &ax25_dev->dev_tracker, GFP_ATOMIC);
ax25_dev->forward = NULL;
ax25_dev->device_up = true;

Expand Down Expand Up @@ -136,7 +136,7 @@ void ax25_dev_device_down(struct net_device *dev)
spin_unlock_bh(&ax25_dev_lock);
ax25_dev_put(ax25_dev);
dev->ax25_ptr = NULL;
dev_put_track(dev, &ax25_dev->dev_tracker);
netdev_put(dev, &ax25_dev->dev_tracker);
ax25_dev_put(ax25_dev);
}

Expand Down Expand Up @@ -205,7 +205,7 @@ void __exit ax25_dev_free(void)
ax25_dev = ax25_dev_list;
while (ax25_dev != NULL) {
s = ax25_dev;
dev_put_track(ax25_dev->dev, &ax25_dev->dev_tracker);
netdev_put(ax25_dev->dev, &ax25_dev->dev_tracker);
ax25_dev = ax25_dev->next;
kfree(s);
}
Expand Down
10 changes: 5 additions & 5 deletions net/bridge/br_if.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ static void destroy_nbp(struct net_bridge_port *p)

p->br = NULL;
p->dev = NULL;
dev_put_track(dev, &p->dev_tracker);
netdev_put(dev, &p->dev_tracker);

kobject_put(&p->kobj);
}
Expand Down Expand Up @@ -423,7 +423,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
return ERR_PTR(-ENOMEM);

p->br = br;
dev_hold_track(dev, &p->dev_tracker, GFP_KERNEL);
netdev_hold(dev, &p->dev_tracker, GFP_KERNEL);
p->dev = dev;
p->path_cost = port_cost(dev);
p->priority = 0x8000 >> BR_PORT_BITS;
Expand All @@ -434,7 +434,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
br_stp_port_timer_init(p);
err = br_multicast_add_port(p);
if (err) {
dev_put_track(dev, &p->dev_tracker);
netdev_put(dev, &p->dev_tracker);
kfree(p);
p = ERR_PTR(err);
}
Expand Down Expand Up @@ -615,7 +615,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
err = dev_set_allmulti(dev, 1);
if (err) {
br_multicast_del_port(p);
dev_put_track(dev, &p->dev_tracker);
netdev_put(dev, &p->dev_tracker);
kfree(p); /* kobject not yet init'd, manually free */
goto err1;
}
Expand Down Expand Up @@ -725,7 +725,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
sysfs_remove_link(br->ifobj, p->dev->name);
err2:
br_multicast_del_port(p);
dev_put_track(dev, &p->dev_tracker);
netdev_put(dev, &p->dev_tracker);
kobject_put(&p->kobj);
dev_set_allmulti(dev, -1);
err1:
Expand Down
10 changes: 5 additions & 5 deletions net/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -7463,7 +7463,7 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
adj->ref_nr = 1;
adj->private = private;
adj->ignore = false;
dev_hold_track(adj_dev, &adj->dev_tracker, GFP_KERNEL);
netdev_hold(adj_dev, &adj->dev_tracker, GFP_KERNEL);

pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d; dev_hold on %s\n",
dev->name, adj_dev->name, adj->ref_nr, adj_dev->name);
Expand Down Expand Up @@ -7492,7 +7492,7 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
if (netdev_adjacent_is_neigh_list(dev, adj_dev, dev_list))
netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list);
free_adj:
dev_put_track(adj_dev, &adj->dev_tracker);
netdev_put(adj_dev, &adj->dev_tracker);
kfree(adj);

return ret;
Expand Down Expand Up @@ -7534,7 +7534,7 @@ static void __netdev_adjacent_dev_remove(struct net_device *dev,
list_del_rcu(&adj->list);
pr_debug("adjacency: dev_put for %s, because link removed from %s to %s\n",
adj_dev->name, dev->name, adj_dev->name);
dev_put_track(adj_dev, &adj->dev_tracker);
netdev_put(adj_dev, &adj->dev_tracker);
kfree_rcu(adj, rcu);
}

Expand Down Expand Up @@ -10062,7 +10062,7 @@ int register_netdevice(struct net_device *dev)

dev_init_scheduler(dev);

dev_hold_track(dev, &dev->dev_registered_tracker, GFP_KERNEL);
netdev_hold(dev, &dev->dev_registered_tracker, GFP_KERNEL);
list_netdevice(dev);

add_device_randomness(dev->dev_addr, dev->addr_len);
Expand Down Expand Up @@ -10868,7 +10868,7 @@ void unregister_netdevice_many(struct list_head *head)
synchronize_net();

list_for_each_entry(dev, head, unreg_list) {
dev_put_track(dev, &dev->dev_registered_tracker);
netdev_put(dev, &dev->dev_registered_tracker);
net_set_todo(dev);
}

Expand Down
4 changes: 2 additions & 2 deletions net/core/dev_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,10 +384,10 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
return -ENODEV;
if (!netif_is_bridge_master(dev))
return -EOPNOTSUPP;
dev_hold_track(dev, &dev_tracker, GFP_KERNEL);
netdev_hold(dev, &dev_tracker, GFP_KERNEL);
rtnl_unlock();
err = br_ioctl_call(net, netdev_priv(dev), cmd, ifr, NULL);
dev_put_track(dev, &dev_tracker);
netdev_put(dev, &dev_tracker);
rtnl_lock();
return err;

Expand Down
5 changes: 3 additions & 2 deletions net/core/drop_monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -864,7 +864,8 @@ net_dm_hw_metadata_copy(const struct devlink_trap_metadata *metadata)
}

hw_metadata->input_dev = metadata->input_dev;
dev_hold_track(hw_metadata->input_dev, &hw_metadata->dev_tracker, GFP_ATOMIC);
netdev_hold(hw_metadata->input_dev, &hw_metadata->dev_tracker,
GFP_ATOMIC);

return hw_metadata;

Expand All @@ -880,7 +881,7 @@ net_dm_hw_metadata_copy(const struct devlink_trap_metadata *metadata)
static void
net_dm_hw_metadata_free(struct devlink_trap_metadata *hw_metadata)
{
dev_put_track(hw_metadata->input_dev, &hw_metadata->dev_tracker);
netdev_put(hw_metadata->input_dev, &hw_metadata->dev_tracker);
kfree(hw_metadata->fa_cookie);
kfree(hw_metadata->trap_name);
kfree(hw_metadata->trap_group_name);
Expand Down
8 changes: 4 additions & 4 deletions net/core/dst.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ void dst_init(struct dst_entry *dst, struct dst_ops *ops,
unsigned short flags)
{
dst->dev = dev;
dev_hold_track(dev, &dst->dev_tracker, GFP_ATOMIC);
netdev_hold(dev, &dst->dev_tracker, GFP_ATOMIC);
dst->ops = ops;
dst_init_metrics(dst, dst_default_metrics.metrics, true);
dst->expires = 0UL;
Expand Down Expand Up @@ -117,7 +117,7 @@ struct dst_entry *dst_destroy(struct dst_entry * dst)

if (dst->ops->destroy)
dst->ops->destroy(dst);
dev_put_track(dst->dev, &dst->dev_tracker);
netdev_put(dst->dev, &dst->dev_tracker);

lwtstate_put(dst->lwtstate);

Expand Down Expand Up @@ -159,8 +159,8 @@ void dst_dev_put(struct dst_entry *dst)
dst->input = dst_discard;
dst->output = dst_discard_out;
dst->dev = blackhole_netdev;
dev_replace_track(dev, blackhole_netdev, &dst->dev_tracker,
GFP_ATOMIC);
netdev_ref_replace(dev, blackhole_netdev, &dst->dev_tracker,
GFP_ATOMIC);
}
EXPORT_SYMBOL(dst_dev_put);

Expand Down
4 changes: 2 additions & 2 deletions net/core/failover.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ struct failover *failover_register(struct net_device *dev,
return ERR_PTR(-ENOMEM);

rcu_assign_pointer(failover->ops, ops);
dev_hold_track(dev, &failover->dev_tracker, GFP_KERNEL);
netdev_hold(dev, &failover->dev_tracker, GFP_KERNEL);
dev->priv_flags |= IFF_FAILOVER;
rcu_assign_pointer(failover->failover_dev, dev);

Expand Down Expand Up @@ -285,7 +285,7 @@ void failover_unregister(struct failover *failover)
failover_dev->name);

failover_dev->priv_flags &= ~IFF_FAILOVER;
dev_put_track(failover_dev, &failover->dev_tracker);
netdev_put(failover_dev, &failover->dev_tracker);

spin_lock(&failover_lock);
list_del(&failover->list);
Expand Down
Loading

0 comments on commit d62607c

Please sign in to comment.