fs/resctrl: Restore the rdt_last_cmd_clear() calls after acquiring rdtgroup_mutex
authorZeng Heng <zengheng4@huawei.com>
Tue, 3 Jun 2025 12:58:28 +0000 (20:58 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 4 Jun 2025 18:32:55 +0000 (20:32 +0200)
A lockdep fix removed two rdt_last_cmd_clear() calls that were used to
clear the last_cmd_status buffer but called without holding the required
rdtgroup_mutex.

The impacted resctrl commands are writing to the cpus or cpus_list files
and creating a new monitor or control group. With stale data in the
last_cmd_status buffer the impacted resctrl commands report the stale error
on success, or append its own failure message to the stale error on
failure.

Consequently, restore the rdt_last_cmd_clear() calls after acquiring
rdtgroup_mutex.

Fixes: c8eafe149530 ("x86/resctrl: Fix potential lockdep warning")
Signed-off-by: Zeng Heng <zengheng4@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Link: https://lore.kernel.org/all/20250603125828.1590067-1-zengheng4@huawei.com
fs/resctrl/rdtgroup.c

index cc37f58b47dd7145cb6fdb55827291b63c23c622..1beb124e25f6f56a903fa72bc769e3ed30a7c4c8 100644 (file)
@@ -536,6 +536,8 @@ static ssize_t rdtgroup_cpus_write(struct kernfs_open_file *of,
                goto unlock;
        }
 
+       rdt_last_cmd_clear();
+
        if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED ||
            rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) {
                ret = -EINVAL;
@@ -3472,6 +3474,8 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
                goto out_unlock;
        }
 
+       rdt_last_cmd_clear();
+
        /*
         * Check that the parent directory for a monitor group is a "mon_groups"
         * directory.