Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 266d4f40 authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds
Browse files

[PATCH] suspend regression: sysfs deadlock



Suspend deadlocks when trying to unregister /sys/block/sr0.

This comes from Oliver's commit 94bebf4d
"Driver core: fix race in sysfs between sysfs_remove_file() and
read()/write()".

sysfs_write_file downs buffer->sem while calling flush_write_buffer, and
flushing that particular write buffer entails downing buffer->sem in
orphan_all_buffers, resulting in the obvious self-deadlock.

Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7c368bb1
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -227,11 +227,8 @@ static inline void orphan_all_buffers(struct inode *node)

	mutex_lock_nested(&node->i_mutex, I_MUTEX_CHILD);
	if (node->i_private) {
		list_for_each_entry(buf, &set->associates, associates) {
			down(&buf->sem);
		list_for_each_entry(buf, &set->associates, associates)
			buf->orphaned = 1;
			up(&buf->sem);
		}
	}
	mutex_unlock(&node->i_mutex);
}