Skip to content

Commit dadcf07

Browse files
committed
Merge: CNB97: saner replacement for debugfs_rename()
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6762 JIRA: https://issues.redhat.com/browse/RHEL-87378 saner replacement for debugfs_rename() Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com> Approved-by: Ivan Vecera <ivecera@redhat.com> Approved-by: Desnes Nunes <desnesn@redhat.com> Approved-by: Rafael Aquini <raquini@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Augusto Caringi <acaringi@redhat.com>
2 parents 313ef75 + aafed8e commit dadcf07

File tree

16 files changed

+282
-316
lines changed

16 files changed

+282
-316
lines changed

Documentation/filesystems/debugfs.rst

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,18 +211,16 @@ seq_file content.
211211

212212
There are a couple of other directory-oriented helper functions::
213213

214-
struct dentry *debugfs_rename(struct dentry *old_dir,
215-
struct dentry *old_dentry,
216-
struct dentry *new_dir,
217-
const char *new_name);
214+
struct dentry *debugfs_change_name(struct dentry *dentry,
215+
const char *fmt, ...);
218216

219217
struct dentry *debugfs_create_symlink(const char *name,
220218
struct dentry *parent,
221219
const char *target);
222220

223-
A call to debugfs_rename() will give a new name to an existing debugfs
224-
file, possibly in a different directory. The new_name must not exist prior
225-
to the call; the return value is old_dentry with updated information.
221+
A call to debugfs_change_name() will give a new name to an existing debugfs
222+
file, always in the same directory. The new_name must not exist prior
223+
to the call; the return value is 0 on success and -E... on failuer.
226224
Symbolic links can be created with debugfs_create_symlink().
227225

228226
There is one important thing that all debugfs users must take into account:

drivers/net/bonding/bond_debugfs.c

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ DEFINE_SHOW_ATTRIBUTE(bond_debug_rlb_hash);
4949

5050
void bond_debug_register(struct bonding *bond)
5151
{
52-
if (!bonding_debug_root)
53-
return;
54-
5552
bond->debug_dir =
5653
debugfs_create_dir(bond->dev->name, bonding_debug_root);
5754

@@ -61,24 +58,13 @@ void bond_debug_register(struct bonding *bond)
6158

6259
void bond_debug_unregister(struct bonding *bond)
6360
{
64-
if (!bonding_debug_root)
65-
return;
66-
6761
debugfs_remove_recursive(bond->debug_dir);
6862
}
6963

7064
void bond_debug_reregister(struct bonding *bond)
7165
{
72-
struct dentry *d;
73-
74-
if (!bonding_debug_root)
75-
return;
76-
77-
d = debugfs_rename(bonding_debug_root, bond->debug_dir,
78-
bonding_debug_root, bond->dev->name);
79-
if (d) {
80-
bond->debug_dir = d;
81-
} else {
66+
int err = debugfs_change_name(bond->debug_dir, "%s", bond->dev->name);
67+
if (err) {
8268
netdev_warn(bond->dev, "failed to reregister, so just unregister old one\n");
8369
bond_debug_unregister(bond);
8470
}
@@ -88,7 +74,7 @@ void __init bond_create_debugfs(void)
8874
{
8975
bonding_debug_root = debugfs_create_dir("bonding", NULL);
9076

91-
if (!bonding_debug_root)
77+
if (IS_ERR(bonding_debug_root))
9278
pr_warn("Warning: Cannot create bonding directory in debugfs\n");
9379
}
9480

drivers/net/bonding/bond_main.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6638,16 +6638,16 @@ static int __init bonding_init(void)
66386638
if (res)
66396639
goto out;
66406640

6641+
bond_create_debugfs();
6642+
66416643
res = register_pernet_subsys(&bond_net_ops);
66426644
if (res)
6643-
goto out;
6645+
goto err_net_ops;
66446646

66456647
res = bond_netlink_init();
66466648
if (res)
66476649
goto err_link;
66486650

6649-
bond_create_debugfs();
6650-
66516651
for (i = 0; i < max_bonds; i++) {
66526652
res = bond_create(&init_net, NULL);
66536653
if (res)
@@ -6662,10 +6662,11 @@ static int __init bonding_init(void)
66626662
out:
66636663
return res;
66646664
err:
6665-
bond_destroy_debugfs();
66666665
bond_netlink_fini();
66676666
err_link:
66686667
unregister_pernet_subsys(&bond_net_ops);
6668+
err_net_ops:
6669+
bond_destroy_debugfs();
66696670
goto out;
66706671

66716672
}
@@ -6674,11 +6675,11 @@ static void __exit bonding_exit(void)
66746675
{
66756676
unregister_netdevice_notifier(&bond_netdev_notifier);
66766677

6677-
bond_destroy_debugfs();
6678-
66796678
bond_netlink_fini();
66806679
unregister_pernet_subsys(&bond_net_ops);
66816680

6681+
bond_destroy_debugfs();
6682+
66826683
#ifdef CONFIG_NET_POLL_CONTROLLER
66836684
/* Make sure we don't have an imbalance on our netpoll blocking */
66846685
WARN_ON(atomic_read(&netpoll_block_tx));

drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -505,21 +505,6 @@ void xgbe_debugfs_exit(struct xgbe_prv_data *pdata)
505505

506506
void xgbe_debugfs_rename(struct xgbe_prv_data *pdata)
507507
{
508-
char *buf;
509-
510-
if (!pdata->xgbe_debugfs)
511-
return;
512-
513-
buf = kasprintf(GFP_KERNEL, "amd-xgbe-%s", pdata->netdev->name);
514-
if (!buf)
515-
return;
516-
517-
if (!strcmp(pdata->xgbe_debugfs->d_name.name, buf))
518-
goto out;
519-
520-
debugfs_rename(pdata->xgbe_debugfs->d_parent, pdata->xgbe_debugfs,
521-
pdata->xgbe_debugfs->d_parent, buf);
522-
523-
out:
524-
kfree(buf);
508+
debugfs_change_name(pdata->xgbe_debugfs,
509+
"amd-xgbe-%s", pdata->netdev->name);
525510
}

drivers/net/ethernet/marvell/skge.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3742,10 +3742,7 @@ static int skge_device_event(struct notifier_block *unused,
37423742
skge = netdev_priv(dev);
37433743
switch (event) {
37443744
case NETDEV_CHANGENAME:
3745-
if (skge->debugfs)
3746-
skge->debugfs = debugfs_rename(skge_debug,
3747-
skge->debugfs,
3748-
skge_debug, dev->name);
3745+
debugfs_change_name(skge->debugfs, "%s", dev->name);
37493746
break;
37503747

37513748
case NETDEV_GOING_DOWN:

drivers/net/ethernet/marvell/sky2.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4635,10 +4635,7 @@ static int sky2_device_event(struct notifier_block *unused,
46354635

46364636
switch (event) {
46374637
case NETDEV_CHANGENAME:
4638-
if (sky2->debugfs) {
4639-
sky2->debugfs = debugfs_rename(sky2_debug, sky2->debugfs,
4640-
sky2_debug, dev->name);
4641-
}
4638+
debugfs_change_name(sky2->debugfs, "%s", dev->name);
46424639
break;
46434640

46444641
case NETDEV_GOING_DOWN:

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6564,11 +6564,7 @@ static int stmmac_device_event(struct notifier_block *unused,
65646564

65656565
switch (event) {
65666566
case NETDEV_CHANGENAME:
6567-
if (priv->dbgfs_dir)
6568-
priv->dbgfs_dir = debugfs_rename(stmmac_fs_dir,
6569-
priv->dbgfs_dir,
6570-
stmmac_fs_dir,
6571-
dev->name);
6567+
debugfs_change_name(priv->dbgfs_dir, "%s", dev->name);
65726568
break;
65736569
}
65746570
done:

drivers/opp/debugfs.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ static void opp_migrate_dentry(struct opp_device *opp_dev,
215215
{
216216
struct opp_device *new_dev = NULL, *iter;
217217
const struct device *dev;
218-
struct dentry *dentry;
218+
int err;
219219

220220
/* Look for next opp-dev */
221221
list_for_each_entry(iter, &opp_table->dev_list, node)
@@ -232,16 +232,14 @@ static void opp_migrate_dentry(struct opp_device *opp_dev,
232232

233233
opp_set_dev_name(dev, opp_table->dentry_name);
234234

235-
dentry = debugfs_rename(rootdir, opp_dev->dentry, rootdir,
236-
opp_table->dentry_name);
237-
if (!dentry) {
235+
err = debugfs_change_name(opp_dev->dentry, "%s", opp_table->dentry_name);
236+
if (err) {
238237
dev_err(dev, "%s: Failed to rename link from: %s to %s\n",
239238
__func__, dev_name(opp_dev->dev), dev_name(dev));
240239
return;
241240
}
242241

243-
new_dev->dentry = dentry;
244-
opp_table->dentry = dentry;
242+
new_dev->dentry = opp_table->dentry = opp_dev->dentry;
245243
}
246244

247245
/**

0 commit comments

Comments
 (0)