diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 8b19f239c1e8..fa173ee07a7d 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -801,6 +801,9 @@ static ssize_t firmware_direct_read(struct file *filp, struct kobject *kobj, struct firmware *fw; ssize_t ret_count; + if (!fw_priv->fw) + return -ENODEV; + mutex_lock(&fw_lock); fw = fw_priv->fw; @@ -811,7 +814,7 @@ static ssize_t firmware_direct_read(struct file *filp, struct kobject *kobj, if (count > fw->size - offset) count = fw->size - offset; - if (!fw || test_bit(FW_STATUS_DONE, &fw_priv->buf->status)) { + if (test_bit(FW_STATUS_DONE, &fw_priv->buf->status)) { ret_count = -ENODEV; goto out; }