]> git.baikalelectronics.ru Git - kernel.git/commit
of: fix race when matching drivers
authorMilton Miller <miltonm@bga.com>
Wed, 18 May 2011 15:27:39 +0000 (10:27 -0500)
committerGrant Likely <grant.likely@secretlab.ca>
Wed, 18 May 2011 16:19:36 +0000 (10:19 -0600)
commit6e0cb7a332447fe405a001da875844ac66306205
tree98707dfac7c9533dbfef30c4ff05c0dfdabc17a6
parent69273ddfcd5e2bf525123cc9196200d45fb8c37f
of: fix race when matching drivers

If two drivers are probing devices at the same time, both will write
their match table result to the dev->of_match cache at the same time.

Only write the result if the device matches.

In a thread titled "SBus devices sometimes detected, sometimes not",
Meelis reported his SBus hme was not detected about 50% of the time.
From the debug suggested by Grant it was obvious another driver matched
some devices between the call to match the hme and the hme discovery
failling.

Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Milton Miller <miltonm@bga.com>
[grant.likely: modified to only call of_match_device() once]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
include/linux/of_device.h