]> git.karo-electronics.de Git - karo-tx-linux.git/commit
firmware loader: fix device lifetime
authorMing Lei <ming.lei@canonical.com>
Sat, 4 Aug 2012 04:01:23 +0000 (12:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Aug 2012 20:28:50 +0000 (13:28 -0700)
commit0cfc1e1e7b5347b4b6df1212f365ce6620bdd98f
tree4d976455cea5dc6055c132b0f9833b01afe5c285
parent2887b3959c8b2f6ed1f62ce95c0888aedb1ea84b
firmware loader: fix device lifetime

Callers of request_firmware* must hold the reference count of
@device, otherwise it is easy to trigger oops since the firmware
loader device is the child of @device.

This patch adds comments about the usage. In fact, most of drivers
call request_firmware* in its probe() or open(), so the constraint
should be reasonable and can be satisfied.

Also this patch holds the reference count of @device before
schedule_work() in request_firmware_nowait() to avoid that
the @device is released after request_firmware_nowait returns
and before the worker function is scheduled.

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