In the function clear_inodedeps(), a FREE_LOCK() should be called
AFTER the call to vn_start_write(), not before it. Otherwise, it is possible to unlock it multiple times if the vn_start_write() fails. Submitted by: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
This commit is contained in:
parent
d1dbb3b2d4
commit
5b78fad42b
@ -5699,9 +5699,9 @@ clear_inodedeps(td)
|
||||
for (ino = firstino; ino <= lastino; ino++) {
|
||||
if (inodedep_lookup(fs, ino, 0, &inodedep) == 0)
|
||||
continue;
|
||||
FREE_LOCK(&lk);
|
||||
if (vn_start_write(NULL, &mp, V_NOWAIT) != 0)
|
||||
continue;
|
||||
FREE_LOCK(&lk);
|
||||
if ((error = VFS_VGET(mp, ino, LK_EXCLUSIVE, &vp)) != 0) {
|
||||
softdep_error("clear_inodedeps: vget", error);
|
||||
vn_finished_write(mp);
|
||||
|
Loading…
Reference in New Issue
Block a user