From mboxrd@z Thu Jan 1 00:00:00 1970 From: Djalal Harouni Subject: Re: [PATCH 6/9] procfs: add pid_seq_private struct to handle /proc//{stat|stack} Date: Tue, 27 May 2014 12:18:06 +0100 Message-ID: <20140527111806.GA3148@dztty> References: <1401110850-3552-1-git-send-email-tixxdz@opendz.org> <1401110850-3552-7-git-send-email-tixxdz@opendz.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Kees Cook , Andrew Morton , Alexey Dobriyan , "Eric W. Biederman" , Al Viro , Linus Torvalds , Ingo Molnar , Oleg Nesterov , Peter Zijlstra , LKML , Linux FS Devel To: Andy Lutomirski Return-path: Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Mon, May 26, 2014 at 10:02:15AM -0700, Andy Lutomirski wrote: > On Mon, May 26, 2014 at 6:27 AM, Djalal Harouni wrote: > > This patch is preparation to handle sensitive ONE entries: > > /proc//stat > > /proc//stack > > > > These files use sequence iterators and we want to keep that logic, and > > their internal handler semantics. > > > > The sequence iterators stock the inode in the seq_file->private field, > > so in order to keep the semantic and to make the cached permission > > checks available during ->read(), we add the 'pid_seq_private' struct > > that contains both the inode and the cached permission. It will be the > > one referenced in the seq_file->private. > > > > This way the internal handlers of /proc//{stat|stack} wont change. > > > > Signed-off-by: Djalal Harouni > > --- > > fs/proc/internal.h | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/fs/proc/internal.h b/fs/proc/internal.h > > index f5c452c..f28e4f01 100644 > > --- a/fs/proc/internal.h > > +++ b/fs/proc/internal.h > > @@ -78,6 +78,17 @@ struct proc_inode { > > struct inode vfs_inode; > > }; > > > > +/* > > + * Struct used by some /proc//$entries that use sequence > > + * iterators. > > + * This struct will be saved in seq_file->private so seq handlers > > + * can access the inode and the cached permission checks of ->open(). > > + */ > > +struct pid_seq_private { > > + int permitted; > > + struct inode *inode; > > +}; > > + > > typedef int (*proc_read_fn_t)(char *page, > > struct task_struct *task, int permitted); > > int opener_may_ptrace, please. Ok, I'll change it in v2. Thanks -- Djalal Harouni http://opendz.org