]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
firmware_loader: Only call cancel when upload is active
authorKaushlendra Kumar <kaushlendra.kumar@intel.com>
Thu, 25 Sep 2025 05:41:29 +0000 (11:11 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Oct 2025 06:09:23 +0000 (08:09 +0200)
The cancel_store() function currently calls the firmware upload cancel
operation even when no upload is in progress (i.e., when progress is
FW_UPLOAD_PROG_IDLE).

Update cancel_store() to only invoke the cancel operation when an upload
is active. If the upload is idle, return -ENODEV without calling cancel.

This change improves safety and correctness by ensuring driver operations
are only called in valid states.

Signed-off-by: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
Link: https://patch.msgid.link/20250925054129.2199157-1-kaushlendra.kumar@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/firmware_loader/sysfs_upload.c

index 829270067d1632f92656859fb9143e3fa9635670..c3797b93c5f5a2ecf2ae34707893c89eb7773154 100644 (file)
@@ -100,8 +100,10 @@ static ssize_t cancel_store(struct device *dev, struct device_attribute *attr,
                return -EINVAL;
 
        mutex_lock(&fwlp->lock);
-       if (fwlp->progress == FW_UPLOAD_PROG_IDLE)
-               ret = -ENODEV;
+       if (fwlp->progress == FW_UPLOAD_PROG_IDLE) {
+               mutex_unlock(&fwlp->lock);
+               return -ENODEV;
+       }
 
        fwlp->ops->cancel(fwlp->fw_upload);
        mutex_unlock(&fwlp->lock);