lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 14 Apr 2016 19:32:31 -0400 From: Waiman Long <Waiman.Long@....com> To: Alexander Viro <viro@...iv.linux.org.uk>, Jan Kara <jack@...e.com>, Jeff Layton <jlayton@...chiereds.net>, "J. Bruce Fields" <bfields@...ldses.org>, Tejun Heo <tj@...nel.org>, Christoph Lameter <cl@...ux-foundation.org> Cc: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...hat.com>, Peter Zijlstra <peterz@...radead.org>, Andi Kleen <andi@...stfloor.org>, Dave Chinner <dchinner@...hat.com>, Boqun Feng <boqun.feng@...il.com>, Scott J Norton <scott.norton@....com>, Douglas Hatch <doug.hatch@....com>, Jan Kara <jack@...e.cz>, Waiman Long <Waiman.Long@....com> Subject: [PATCH 4/5] vfs: Remove unnecessary list_for_each_entry_safe() variants From: Jan Kara <jack@...e.cz> evict_inodes() and invalidate_inodes() use list_for_each_entry_safe() to iterate sb->s_inodes list. However, since we use i_lru list entry for our local temporary list of inodes to destroy, the inode is guaranteed to stay in sb->s_inodes list while we hold sb->s_inode_list_lock. So there is no real need for safe iteration variant and we can use list_for_each_entry() just fine. Signed-off-by: Jan Kara <jack@...e.cz> Signed-off-by: Waiman Long <Waiman.Long@....com> --- fs/inode.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 69b8b52..c9cbea8 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -596,12 +596,12 @@ static void dispose_list(struct list_head *head) */ void evict_inodes(struct super_block *sb) { - struct inode *inode, *next; + struct inode *inode; LIST_HEAD(dispose); again: spin_lock(&sb->s_inode_list_lock); - list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) { + list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { if (atomic_read(&inode->i_count)) continue; @@ -646,11 +646,11 @@ again: int invalidate_inodes(struct super_block *sb, bool kill_dirty) { int busy = 0; - struct inode *inode, *next; + struct inode *inode; LIST_HEAD(dispose); spin_lock(&sb->s_inode_list_lock); - list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) { + list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { spin_lock(&inode->i_lock); if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { spin_unlock(&inode->i_lock); -- 1.7.1
Powered by blists - more mailing lists