]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
x86/resctrl: Fix a deadlock due to inaccurate reference
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / kernel / cpu / intel_rdt_rdtgroup.c
index b3be4d50d07b147c4060c7fd580465750c5fccb6..eeba87919e5cb06b4b81dbaeffd9d7f4a508083c 100644 (file)
@@ -1176,7 +1176,7 @@ static struct dentry *rdt_mount(struct file_system_type *fs_type,
 
        if (rdt_mon_capable) {
                ret = mongroup_create_dir(rdtgroup_default.kn,
-                                         NULL, "mon_groups",
+                                         &rdtgroup_default, "mon_groups",
                                          &kn_mongrp);
                if (ret) {
                        dentry = ERR_PTR(ret);
@@ -1570,7 +1570,7 @@ static int mkdir_mondata_all(struct kernfs_node *parent_kn,
        /*
         * Create the mon_data directory first.
         */
-       ret = mongroup_create_dir(parent_kn, NULL, "mon_data", &kn);
+       ret = mongroup_create_dir(parent_kn, prgrp, "mon_data", &kn);
        if (ret)
                return ret;
 
@@ -1604,7 +1604,7 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
        uint files = 0;
        int ret;
 
-       prdtgrp = rdtgroup_kn_lock_live(prgrp_kn);
+       prdtgrp = rdtgroup_kn_lock_live(parent_kn);
        rdt_last_cmd_clear();
        if (!prdtgrp) {
                ret = -ENODEV;
@@ -1671,7 +1671,7 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
        kernfs_activate(kn);
 
        /*
-        * The caller unlocks the prgrp_kn upon success.
+        * The caller unlocks the parent_kn upon success.
         */
        return 0;
 
@@ -1682,7 +1682,7 @@ out_destroy:
 out_free_rgrp:
        kfree(rdtgrp);
 out_unlock:
-       rdtgroup_kn_unlock(prgrp_kn);
+       rdtgroup_kn_unlock(parent_kn);
        return ret;
 }
 
@@ -1720,7 +1720,7 @@ static int rdtgroup_mkdir_mon(struct kernfs_node *parent_kn,
         */
        list_add_tail(&rdtgrp->mon.crdtgrp_list, &prgrp->mon.crdtgrp_list);
 
-       rdtgroup_kn_unlock(prgrp_kn);
+       rdtgroup_kn_unlock(parent_kn);
        return ret;
 }
 
@@ -1759,7 +1759,7 @@ static int rdtgroup_mkdir_ctrl_mon(struct kernfs_node *parent_kn,
                 * Create an empty mon_groups directory to hold the subset
                 * of tasks and cpus to monitor.
                 */
-               ret = mongroup_create_dir(kn, NULL, "mon_groups", NULL);
+               ret = mongroup_create_dir(kn, rdtgrp, "mon_groups", NULL);
                if (ret) {
                        rdt_last_cmd_puts("kernfs subdir error\n");
                        goto out_id_free;
@@ -1774,7 +1774,7 @@ out_id_free:
 out_common_fail:
        mkdir_rdt_prepare_clean(rdtgrp);
 out_unlock:
-       rdtgroup_kn_unlock(prgrp_kn);
+       rdtgroup_kn_unlock(parent_kn);
        return ret;
 }