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: Fri, 24 Feb 2017 18:00:31 -0500 From: Mike Marshall <hubcap@...ibond.com> To: Al Viro <viro@...iv.linux.org.uk> Cc: Peter Zijlstra <peterz@...radead.org>, Linus Torvalds <torvalds@...ux-foundation.org>, Chris Mason <clm@...com>, LKML <linux-kernel@...r.kernel.org>, linux-fsdevel <linux-fsdevel@...r.kernel.org>, David Howells <dhowells@...hat.com>, elena.reshetova@...el.com, ishkamiel@...il.com, dwindsor@...il.com, Greg Kroah-Hartman <gregkh@...uxfoundation.org> Subject: Re: [RFC][PATCH 07/10] orangefs: Use RCU for destroy_inode Thanks Al... I was going to try and evaluate that patch next week, now all I have to do is test it <g> ... -Mike On Fri, Feb 24, 2017 at 3:52 PM, Al Viro <viro@...iv.linux.org.uk> wrote: > That, AFAICS, fixes a real bug. Applied, and it needs Cc:stable as well. > > >> Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org> >> --- >> fs/orangefs/super.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> --- a/fs/orangefs/super.c >> +++ b/fs/orangefs/super.c >> @@ -115,6 +115,13 @@ static struct inode *orangefs_alloc_inod >> return &orangefs_inode->vfs_inode; >> } >> >> +static void orangefs_i_callback(struct rcu_head *head) >> +{ >> + struct inode *inode = container_of(head, struct inode, i_rcu); >> + struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode); >> + kmem_cache_free(orangefs_inode_cache, orangefs_inode); >> +} >> + >> static void orangefs_destroy_inode(struct inode *inode) >> { >> struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode); >> @@ -123,7 +130,7 @@ static void orangefs_destroy_inode(struc >> "%s: deallocated %p destroying inode %pU\n", >> __func__, orangefs_inode, get_khandle_from_ino(inode)); >> >> - kmem_cache_free(orangefs_inode_cache, orangefs_inode); >> + call_rcu(&inode->i_rcu, orangefs_i_callback); >> } >> >> /* >> >>
Powered by blists - more mailing lists