net: devlink: avoid false DEADLOCK warning reported by lockdep
[platform/kernel/linux-starfive.git] / net / core / devlink.c
index a9776ea..d2a4e6e 100644 (file)
@@ -66,6 +66,7 @@ struct devlink {
         * port, sb, dpipe, resource, params, region, traps and more.
         */
        struct mutex lock;
+       struct lock_class_key lock_key;
        u8 reload_failed:1;
        refcount_t refcount;
        struct completion comp;
@@ -9472,7 +9473,9 @@ struct devlink *devlink_alloc_ns(const struct devlink_ops *ops,
        INIT_LIST_HEAD(&devlink->trap_list);
        INIT_LIST_HEAD(&devlink->trap_group_list);
        INIT_LIST_HEAD(&devlink->trap_policer_list);
+       lockdep_register_key(&devlink->lock_key);
        mutex_init(&devlink->lock);
+       lockdep_set_class(&devlink->lock, &devlink->lock_key);
        mutex_init(&devlink->reporters_lock);
        mutex_init(&devlink->linecards_lock);
        refcount_set(&devlink->refcount, 1);
@@ -9619,6 +9622,7 @@ void devlink_free(struct devlink *devlink)
        mutex_destroy(&devlink->linecards_lock);
        mutex_destroy(&devlink->reporters_lock);
        mutex_destroy(&devlink->lock);
+       lockdep_unregister_key(&devlink->lock_key);
        WARN_ON(!list_empty(&devlink->trap_policer_list));
        WARN_ON(!list_empty(&devlink->trap_group_list));
        WARN_ON(!list_empty(&devlink->trap_list));