]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hsr: rename debugfs file when interface name is changed
authorTaehee Yoo <ap420073@gmail.com>
Sun, 22 Dec 2019 11:26:39 +0000 (11:26 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Jan 2020 18:48:24 +0000 (19:48 +0100)
commit 4c2d5e33dcd3a6333a7895be3b542ff3d373177c upstream.

hsr interface has own debugfs file, which name is same with interface name.
So, interface name is changed, debugfs file name should be changed too.

Fixes: fc4ecaeebd26 ("net: hsr: add debugfs support for display node list")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/hsr/hsr_debugfs.c
net/hsr/hsr_main.c
net/hsr/hsr_main.h

index a7462a718e7baeb16c9440e8fe8b1ba8f2db6ff3..d5f709b940ffd058deb2870ea559dfb2f0db035a 100644 (file)
@@ -65,6 +65,19 @@ hsr_node_table_open(struct inode *inode, struct file *filp)
        return single_open(filp, hsr_node_table_show, inode->i_private);
 }
 
+void hsr_debugfs_rename(struct net_device *dev)
+{
+       struct hsr_priv *priv = netdev_priv(dev);
+       struct dentry *d;
+
+       d = debugfs_rename(hsr_debugfs_root_dir, priv->node_tbl_root,
+                          hsr_debugfs_root_dir, dev->name);
+       if (IS_ERR(d))
+               netdev_warn(dev, "failed to rename\n");
+       else
+               priv->node_tbl_root = d;
+}
+
 static const struct file_operations hsr_fops = {
        .open   = hsr_node_table_open,
        .read   = seq_read,
index e28c975520ec4e3ca7f14aad479e0c2d6ddd64e3..d2ee7125a7f195ae399653f26e1023c60c949a02 100644 (file)
@@ -45,6 +45,9 @@ static int hsr_netdev_notify(struct notifier_block *nb, unsigned long event,
        case NETDEV_CHANGE:     /* Link (carrier) state changes */
                hsr_check_carrier_and_operstate(hsr);
                break;
+       case NETDEV_CHANGENAME:
+               hsr_debugfs_rename(dev);
+               break;
        case NETDEV_CHANGEADDR:
                if (port->type == HSR_PT_MASTER) {
                        /* This should not happen since there's no
index 6696923fd4bdf76ae06e6ab45ed5e289e46887d9..d40de84a637f3af801bc4d317b396a992b7e2340 100644 (file)
@@ -185,11 +185,15 @@ static inline u16 hsr_get_skb_sequence_nr(struct sk_buff *skb)
 }
 
 #if IS_ENABLED(CONFIG_DEBUG_FS)
+void hsr_debugfs_rename(struct net_device *dev);
 void hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev);
 void hsr_debugfs_term(struct hsr_priv *priv);
 void hsr_debugfs_create_root(void);
 void hsr_debugfs_remove_root(void);
 #else
+static inline void void hsr_debugfs_rename(struct net_device *dev)
+{
+}
 static inline void hsr_debugfs_init(struct hsr_priv *priv,
                                    struct net_device *hsr_dev)
 {}