firmware loader: fix firmware -ENOENT situations
authorMing Lei <ming.lei@canonical.com>
Mon, 20 Aug 2012 11:04:15 +0000 (19:04 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Sep 2012 21:46:16 +0000 (14:46 -0700)
If the requested firmware image doesn't exist, firmware->priv
should be set for the later concurrent requests, otherwise
warning and oops will be triggered inside firmware_free_data().

Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/firmware_class.c

index ed0510a..edc88bc 100644 (file)
@@ -718,6 +718,7 @@ _request_firmware_prepare(const struct firmware **firmware_p, const char *name,
        mutex_lock(&fw_lock);
        if (test_bit(FW_STATUS_ABORT, &buf->status)) {
                fw_priv = ERR_PTR(-ENOENT);
+               firmware->priv = buf;
                _request_firmware_cleanup(firmware_p);
                goto exit;
        } else if (test_bit(FW_STATUS_DONE, &buf->status)) {