]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86/intel/pmt: re-order trigger logic
authorMichael J. Ruhl <michael.j.ruhl@intel.com>
Sun, 13 Jul 2025 17:29:37 +0000 (13:29 -0400)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 22 Jul 2025 14:38:58 +0000 (17:38 +0300)
Setting the clear bit or checking the complete bit before checking to
see if crashlog is disabled seems incorrect.

Check disable before accessing any other bits.

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Link: https://lore.kernel.org/r/20250713172943.7335-8-michael.j.ruhl@intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/intel/pmt/crashlog.c

index c3ca95854aba975ce14215d79c5c69df5d72397a..440d2045e90d036d47f6846ee588e6b06461e908 100644 (file)
@@ -193,6 +193,10 @@ trigger_store(struct device *dev, struct device_attribute *attr,
 
        guard(mutex)(&entry->control_mutex);
 
+       /* if device is currently disabled, return busy */
+       if (pmt_crashlog_disabled(&entry->entry))
+               return -EBUSY;
+
        if (!trigger) {
                pmt_crashlog_set_clear(&entry->entry);
                return count;
@@ -202,10 +206,6 @@ trigger_store(struct device *dev, struct device_attribute *attr,
        if (pmt_crashlog_complete(&entry->entry))
                return -EEXIST;
 
-       /* if device is currently disabled, return busy */
-       if (pmt_crashlog_disabled(&entry->entry))
-               return -EBUSY;
-
        pmt_crashlog_set_execute(&entry->entry);
 
        return count;