]> git.baikalelectronics.ru Git - kernel.git/commit
driver core: fix shutdown races with probe/remove(v3)
authorMing Lei <ming.lei@canonical.com>
Fri, 22 Jun 2012 10:01:40 +0000 (18:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 17 Jul 2012 01:04:25 +0000 (18:04 -0700)
commit12e36f644d628eb6c2dc72aeda5d2f058103e56e
tree1a6bbf92f2da6f0df73efb6725de990bb63e4853
parentf5f494cbd64cfd8393787ac480bcfdf2a4d7a90a
driver core: fix shutdown races with probe/remove(v3)

Firstly, .shutdown callback may touch a uninitialized hardware
if dev->driver is set and .probe is not completed.

Secondly, device_shutdown() may dereference a null pointer to cause
oops when dev->driver is cleared after it has been checked in
device_shutdown().

So just hold device lock and its parent lock(if it has) to
fix the races.

Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/core.c