diff options
author | James Hogan <james.hogan@imgtec.com> | 2011-06-24 13:55:10 +0100 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-07-20 17:20:58 -0400 |
commit | 7456caae37396fc1bc6f8e9461d07664b8c2f280 (patch) | |
tree | 972f231756e8e766aa367689085a2834c7f6fcb4 /include/linux | |
parent | b40af3aa7712e8f1b73e00e781cd93181483f649 (diff) |
mmc: dw_mmc: fix race with request and removal
When a request is made, the card presence is checked and the request is
queued. These two parts must be atomic with respect to card removal, or
a card removal could be handled in between, and the new request wouldn't
get cancelled until another card was inserted. Therefore move the
spinlock protection from dw_mci_queue_request() up into dw_mci_request()
to cover the presence check.
Note that the test_bit() used for the presence check isn't atomic
itself, so should have been protected by a spinlock anyway.
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions