return rc;
 }
 
+static void fw_finish_direct_load(struct device *device,
+                                 struct firmware_buf *buf)
+{
+       mutex_lock(&fw_lock);
+       set_bit(FW_STATUS_DONE, &buf->status);
+       complete_all(&buf->completion);
+       mutex_unlock(&fw_lock);
+}
+
 static int fw_get_filesystem_firmware(struct device *device,
                                       struct firmware_buf *buf)
 {
        if (!rc) {
                dev_dbg(device, "direct-loading %s\n",
                        buf->fw_id);
-               mutex_lock(&fw_lock);
-               set_bit(FW_STATUS_DONE, &buf->status);
-               complete_all(&buf->completion);
-               mutex_unlock(&fw_lock);
+               fw_finish_direct_load(device, buf);
        }
 
        return rc;