diff options
author | NeilBrown <neilb@suse.de> | 2012-12-11 03:35:54 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-12-11 03:35:54 +0100 |
commit | a7a3f08dc24690ae00c75cfe4b4701a970dd0155 (patch) | |
tree | bc9174cc50feba550a33148e661dc57ac37950dd /init | |
parent | md: removed unused variable in calc_sb_1_csm. (diff) | |
download | linux-a7a3f08dc24690ae00c75cfe4b4701a970dd0155.tar.xz linux-a7a3f08dc24690ae00c75cfe4b4701a970dd0155.zip |
md: close race between removing and adding a device.
When we remove a device from an md array, the final removal of
the "dev-XX" sys entry is run asynchronously.
If we then re-add that device immediately before the worker thread
gets to run, we can end up trying to add the "dev-XX" sysfs entry back
before it has been removed.
So in both places where we add a device, call
flush_workqueue(md_misc_wq);
before taking the md lock (as holding the md lock can prevent removal
to complete).
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions