+++ /dev/null
-From 238af8751f64a75f8b638193353b1c31ea32e738 Mon Sep 17 00:00:00 2001
-From: Frederic Weisbecker <fweisbec@gmail.com>
-Date: Thu, 2 Dec 2010 14:31:16 -0800
-Subject: reiserfs: don't acquire lock recursively in reiserfs_acl_chmod
-
-From: Frederic Weisbecker <fweisbec@gmail.com>
-
-commit 238af8751f64a75f8b638193353b1c31ea32e738 upstream.
-
-reiserfs_acl_chmod() can be called by reiserfs_set_attr() and then take
-the reiserfs lock a second time. Thereafter it may call journal_begin()
-that definitely requires the lock not to be nested in order to release
-it before taking the journal mutex because the reiserfs lock depends on
-the journal mutex already.
-
-So, aviod nesting the lock in reiserfs_acl_chmod().
-
-Reported-by: Pawel Zawora <pzawora@gmail.com>
-Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-Tested-by: Pawel Zawora <pzawora@gmail.com>
-Cc: Jeff Mahoney <jeffm@suse.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/reiserfs/xattr_acl.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- a/fs/reiserfs/xattr_acl.c
-+++ b/fs/reiserfs/xattr_acl.c
-@@ -466,7 +466,9 @@ int reiserfs_acl_chmod(struct inode *ino
- struct reiserfs_transaction_handle th;
- size_t size = reiserfs_xattr_nblocks(inode,
- reiserfs_acl_size(clone->a_count));
-- reiserfs_write_lock(inode->i_sb);
-+ int depth;
-+
-+ depth = reiserfs_write_lock_once(inode->i_sb);
- error = journal_begin(&th, inode->i_sb, size * 2);
- if (!error) {
- int error2;
-@@ -476,7 +478,7 @@ int reiserfs_acl_chmod(struct inode *ino
- if (error2)
- error = error2;
- }
-- reiserfs_write_unlock(inode->i_sb);
-+ reiserfs_write_unlock_once(inode->i_sb, depth);
- }
- posix_acl_release(clone);
- return error;
+++ /dev/null
-From 3f259d092c7a2fdf217823e8f1838530adb0cdb0 Mon Sep 17 00:00:00 2001
-From: Frederic Weisbecker <fweisbec@gmail.com>
-Date: Thu, 30 Sep 2010 15:15:37 -0700
-Subject: reiserfs: fix dependency inversion between inode and reiserfs mutexes
-
-From: Frederic Weisbecker <fweisbec@gmail.com>
-
-commit 3f259d092c7a2fdf217823e8f1838530adb0cdb0 upstream.
-
-The reiserfs mutex already depends on the inode mutex, so we can't lock
-the inode mutex in reiserfs_unpack() without using the safe locking API,
-because reiserfs_unpack() is always called with the reiserfs mutex locked.
-
-This fixes:
-
- =======================================================
- [ INFO: possible circular locking dependency detected ]
- 2.6.35c #13
- -------------------------------------------------------
- lilo/1606 is trying to acquire lock:
- (&sb->s_type->i_mutex_key#8){+.+.+.}, at: [<d0329450>] reiserfs_unpack+0x60/0x110 [reiserfs]
-
- but task is already holding lock:
- (&REISERFS_SB(s)->lock){+.+.+.}, at: [<d032a268>] reiserfs_write_lock+0x28/0x40 [reiserfs]
-
- which lock already depends on the new lock.
-
- the existing dependency chain (in reverse order) is:
-
- -> #1 (&REISERFS_SB(s)->lock){+.+.+.}:
- [<c1056347>] lock_acquire+0x67/0x80
- [<c12f083d>] __mutex_lock_common+0x4d/0x410
- [<c12f0c58>] mutex_lock_nested+0x18/0x20
- [<d032a268>] reiserfs_write_lock+0x28/0x40 [reiserfs]
- [<d0329e9a>] reiserfs_lookup_privroot+0x2a/0x90 [reiserfs]
- [<d0316b81>] reiserfs_fill_super+0x941/0xe60 [reiserfs]
- [<c10b7d17>] get_sb_bdev+0x117/0x170
- [<d0313e21>] get_super_block+0x21/0x30 [reiserfs]
- [<c10b74ba>] vfs_kern_mount+0x6a/0x1b0
- [<c10b7659>] do_kern_mount+0x39/0xe0
- [<c10cebe0>] do_mount+0x340/0x790
- [<c10cf0b4>] sys_mount+0x84/0xb0
- [<c12f25cd>] syscall_call+0x7/0xb
-
- -> #0 (&sb->s_type->i_mutex_key#8){+.+.+.}:
- [<c1056186>] __lock_acquire+0x1026/0x1180
- [<c1056347>] lock_acquire+0x67/0x80
- [<c12f083d>] __mutex_lock_common+0x4d/0x410
- [<c12f0c58>] mutex_lock_nested+0x18/0x20
- [<d0329450>] reiserfs_unpack+0x60/0x110 [reiserfs]
- [<d0329772>] reiserfs_ioctl+0x272/0x320 [reiserfs]
- [<c10c3228>] vfs_ioctl+0x28/0xa0
- [<c10c3c5d>] do_vfs_ioctl+0x32d/0x5c0
- [<c10c3f53>] sys_ioctl+0x63/0x70
- [<c12f25cd>] syscall_call+0x7/0xb
-
- other info that might help us debug this:
-
- 1 lock held by lilo/1606:
- #0: (&REISERFS_SB(s)->lock){+.+.+.}, at: [<d032a268>] reiserfs_write_lock+0x28/0x40 [reiserfs]
-
- stack backtrace:
- Pid: 1606, comm: lilo Not tainted 2.6.35c #13
- Call Trace:
- [<c1056186>] __lock_acquire+0x1026/0x1180
- [<c1056347>] lock_acquire+0x67/0x80
- [<c12f083d>] __mutex_lock_common+0x4d/0x410
- [<c12f0c58>] mutex_lock_nested+0x18/0x20
- [<d0329450>] reiserfs_unpack+0x60/0x110 [reiserfs]
- [<d0329772>] reiserfs_ioctl+0x272/0x320 [reiserfs]
- [<c10c3228>] vfs_ioctl+0x28/0xa0
- [<c10c3c5d>] do_vfs_ioctl+0x32d/0x5c0
- [<c10c3f53>] sys_ioctl+0x63/0x70
- [<c12f25cd>] syscall_call+0x7/0xb
-
-Reported-by: Jarek Poplawski <jarkao2@gmail.com>
-Tested-by: Jarek Poplawski <jarkao2@gmail.com>
-Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-Cc: Jeff Mahoney <jeffm@suse.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/reiserfs/ioctl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/fs/reiserfs/ioctl.c
-+++ b/fs/reiserfs/ioctl.c
-@@ -178,7 +178,7 @@ int reiserfs_unpack(struct inode *inode,
- /* we need to make sure nobody is changing the file size beneath
- ** us
- */
-- mutex_lock(&inode->i_mutex);
-+ reiserfs_mutex_lock_safe(&inode->i_mutex, inode->i_sb);
- reiserfs_write_lock(inode->i_sb);
-
- write_from = inode->i_size & (blocksize - 1);
+++ /dev/null
-From 9d8117e72bf453dd9d85e0cd322ce4a0f8bccbc0 Mon Sep 17 00:00:00 2001
-From: Frederic Weisbecker <fweisbec@gmail.com>
-Date: Thu, 30 Sep 2010 15:15:38 -0700
-Subject: reiserfs: fix unwanted reiserfs lock recursion
-
-From: Frederic Weisbecker <fweisbec@gmail.com>
-
-commit 9d8117e72bf453dd9d85e0cd322ce4a0f8bccbc0 upstream.
-
-Prevent from recursively locking the reiserfs lock in reiserfs_unpack()
-because we may call journal_begin() that requires the lock to be taken
-only once, otherwise it won't be able to release the lock while taking
-other mutexes, ending up in inverted dependencies between the journal
-mutex and the reiserfs lock for example.
-
-This fixes:
-
- =======================================================
- [ INFO: possible circular locking dependency detected ]
- 2.6.35.4.4a #3
- -------------------------------------------------------
- lilo/1620 is trying to acquire lock:
- (&journal->j_mutex){+.+...}, at: [<d0325bff>] do_journal_begin_r+0x7f/0x340 [reiserfs]
-
- but task is already holding lock:
- (&REISERFS_SB(s)->lock){+.+.+.}, at: [<d032a278>] reiserfs_write_lock+0x28/0x40 [reiserfs]
-
- which lock already depends on the new lock.
-
- the existing dependency chain (in reverse order) is:
-
- -> #1 (&REISERFS_SB(s)->lock){+.+.+.}:
- [<c10562b7>] lock_acquire+0x67/0x80
- [<c12facad>] __mutex_lock_common+0x4d/0x410
- [<c12fb0c8>] mutex_lock_nested+0x18/0x20
- [<d032a278>] reiserfs_write_lock+0x28/0x40 [reiserfs]
- [<d0325c06>] do_journal_begin_r+0x86/0x340 [reiserfs]
- [<d0325f77>] journal_begin+0x77/0x140 [reiserfs]
- [<d0315be4>] reiserfs_remount+0x224/0x530 [reiserfs]
- [<c10b6a20>] do_remount_sb+0x60/0x110
- [<c10cee25>] do_mount+0x625/0x790
- [<c10cf014>] sys_mount+0x84/0xb0
- [<c12fca3d>] syscall_call+0x7/0xb
-
- -> #0 (&journal->j_mutex){+.+...}:
- [<c10560f6>] __lock_acquire+0x1026/0x1180
- [<c10562b7>] lock_acquire+0x67/0x80
- [<c12facad>] __mutex_lock_common+0x4d/0x410
- [<c12fb0c8>] mutex_lock_nested+0x18/0x20
- [<d0325bff>] do_journal_begin_r+0x7f/0x340 [reiserfs]
- [<d0325f77>] journal_begin+0x77/0x140 [reiserfs]
- [<d0326271>] reiserfs_persistent_transaction+0x41/0x90 [reiserfs]
- [<d030d06c>] reiserfs_get_block+0x22c/0x1530 [reiserfs]
- [<c10db9db>] __block_prepare_write+0x1bb/0x3a0
- [<c10dbbe6>] block_prepare_write+0x26/0x40
- [<d030b738>] reiserfs_prepare_write+0x88/0x170 [reiserfs]
- [<d03294d6>] reiserfs_unpack+0xe6/0x120 [reiserfs]
- [<d0329782>] reiserfs_ioctl+0x272/0x320 [reiserfs]
- [<c10c3188>] vfs_ioctl+0x28/0xa0
- [<c10c3bbd>] do_vfs_ioctl+0x32d/0x5c0
- [<c10c3eb3>] sys_ioctl+0x63/0x70
- [<c12fca3d>] syscall_call+0x7/0xb
-
- other info that might help us debug this:
-
- 2 locks held by lilo/1620:
- #0: (&sb->s_type->i_mutex_key#8){+.+.+.}, at: [<d032945a>] reiserfs_unpack+0x6a/0x120 [reiserfs]
- #1: (&REISERFS_SB(s)->lock){+.+.+.}, at: [<d032a278>] reiserfs_write_lock+0x28/0x40 [reiserfs]
-
- stack backtrace:
- Pid: 1620, comm: lilo Not tainted 2.6.35.4.4a #3
- Call Trace:
- [<c10560f6>] __lock_acquire+0x1026/0x1180
- [<c10562b7>] lock_acquire+0x67/0x80
- [<c12facad>] __mutex_lock_common+0x4d/0x410
- [<c12fb0c8>] mutex_lock_nested+0x18/0x20
- [<d0325bff>] do_journal_begin_r+0x7f/0x340 [reiserfs]
- [<d0325f77>] journal_begin+0x77/0x140 [reiserfs]
- [<d0326271>] reiserfs_persistent_transaction+0x41/0x90 [reiserfs]
- [<d030d06c>] reiserfs_get_block+0x22c/0x1530 [reiserfs]
- [<c10db9db>] __block_prepare_write+0x1bb/0x3a0
- [<c10dbbe6>] block_prepare_write+0x26/0x40
- [<d030b738>] reiserfs_prepare_write+0x88/0x170 [reiserfs]
- [<d03294d6>] reiserfs_unpack+0xe6/0x120 [reiserfs]
- [<d0329782>] reiserfs_ioctl+0x272/0x320 [reiserfs]
- [<c10c3188>] vfs_ioctl+0x28/0xa0
- [<c10c3bbd>] do_vfs_ioctl+0x32d/0x5c0
- [<c10c3eb3>] sys_ioctl+0x63/0x70
- [<c12fca3d>] syscall_call+0x7/0xb
-
-Reported-by: Jarek Poplawski <jarkao2@gmail.com>
-Tested-by: Jarek Poplawski <jarkao2@gmail.com>
-Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-Cc: Jeff Mahoney <jeffm@suse.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/reiserfs/ioctl.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/fs/reiserfs/ioctl.c
-+++ b/fs/reiserfs/ioctl.c
-@@ -160,6 +160,7 @@ int reiserfs_prepare_write(struct file *
- int reiserfs_unpack(struct inode *inode, struct file *filp)
- {
- int retval = 0;
-+ int depth;
- int index;
- struct page *page;
- struct address_space *mapping;
-@@ -179,7 +180,7 @@ int reiserfs_unpack(struct inode *inode,
- ** us
- */
- reiserfs_mutex_lock_safe(&inode->i_mutex, inode->i_sb);
-- reiserfs_write_lock(inode->i_sb);
-+ depth = reiserfs_write_lock_once(inode->i_sb);
-
- write_from = inode->i_size & (blocksize - 1);
- /* if we are on a block boundary, we are already unpacked. */
-@@ -214,6 +215,6 @@ int reiserfs_unpack(struct inode *inode,
-
- out:
- mutex_unlock(&inode->i_mutex);
-- reiserfs_write_unlock(inode->i_sb);
-+ reiserfs_write_unlock_once(inode->i_sb, depth);
- return retval;
- }
sunrpc-after-calling-xprt_release-we-must-restart-from-call_reserve.patch
microblaze-fix-build-with-make-3.82.patch
net-clear-heap-allocation-for-ethtool_grxclsrlall.patch
-reiserfs-fix-dependency-inversion-between-inode-and-reiserfs-mutexes.patch
-reiserfs-fix-unwanted-reiserfs-lock-recursion.patch
-reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch
staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch
staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch
staging-line6-fix-up-some-sysfs-attribute-permissions.patch