From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-f194.google.com ([209.85.208.194]:33042 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725723AbeJDE6m (ORCPT ); Thu, 4 Oct 2018 00:58:42 -0400 Received: by mail-lj1-f194.google.com with SMTP id z21-v6so6572578ljz.0 for ; Wed, 03 Oct 2018 15:08:26 -0700 (PDT) MIME-Version: 1.0 References: <20180904160632.21210-1-jack@suse.cz> <20180904160632.21210-10-jack@suse.cz> In-Reply-To: <20180904160632.21210-10-jack@suse.cz> From: Paul Moore Date: Wed, 3 Oct 2018 18:08:14 -0400 Message-ID: Subject: Re: [PATCH 09/11] audit: Allocate fsnotify mark independently of chunk To: jack@suse.cz Cc: viro@zeniv.linux.org.uk, linux-audit@redhat.com, linux-fsdevel@vger.kernel.org, rgb@redhat.com, amir73il@gmail.com Content-Type: text/plain; charset="UTF-8" Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, Sep 4, 2018 at 12:06 PM Jan Kara wrote: > Allocate fsnotify mark independently instead of embedding it inside > chunk. This will allow us to just replace chunk attached to mark when > growing / shrinking chunk instead of replacing mark attached to inode > which is a more complex operation. > > Signed-off-by: Jan Kara > --- > kernel/audit_tree.c | 64 +++++++++++++++++++++++++++++++++++++++++------------ > 1 file changed, 50 insertions(+), 14 deletions(-) > > diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c > index 0cd08b3581f1..481fdc190c2f 100644 > --- a/kernel/audit_tree.c > +++ b/kernel/audit_tree.c > @@ -142,10 +148,33 @@ static void audit_mark_put_chunk(struct audit_chunk *chunk) > call_rcu(&chunk->head, __put_chunk); > } > > +static inline struct audit_tree_mark *audit_mark(struct fsnotify_mark *entry) > +{ > + return container_of(entry, struct audit_tree_mark, mark); > +} > + > +static struct audit_chunk *mark_chunk(struct fsnotify_mark *mark) > +{ > + return audit_mark(mark)->chunk; > +} > + ... > @@ -426,7 +460,7 @@ static int tag_chunk(struct inode *inode, struct audit_tree *tree) > if (!old_entry) > return create_chunk(inode, tree); > > - old = container_of(old_entry, struct audit_chunk, mark); > + old = mark_chunk(old_entry)->chunk; I'm pretty sure you mean the following instead? old = mark_chunk(old_entry); > /* are we already there? */ > spin_lock(&hash_lock); -- paul moore www.paul-moore.com