lkml.org 
[lkml]   [2010]   [Oct]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/4] IMA: define readcount functions
    Date
    Define iget/iput_readcount() functions to be called from the VFS layer.

    Signed-off-by: Mimi Zohar <zohar@us.ibm.com>
    ---
    include/linux/fs.h | 13 +++++++++++++
    security/integrity/ima/Makefile | 2 +-
    security/integrity/ima/ima_readcount.c | 32 ++++++++++++++++++++++++++++++++
    3 files changed, 46 insertions(+), 1 deletions(-)
    create mode 100644 security/integrity/ima/ima_readcount.c

    diff --git a/include/linux/fs.h b/include/linux/fs.h
    index bb20373..310d467 100644
    --- a/include/linux/fs.h
    +++ b/include/linux/fs.h
    @@ -2142,6 +2142,19 @@ static inline void allow_write_access(struct file *file)
    if (file)
    atomic_inc(&file->f_path.dentry->d_inode->i_writecount);
    }
    +#ifdef CONFIG_IMA
    +extern void iput_readcount(struct inode *inode);
    +extern void iget_readcount(struct inode *inode);
    +#else
    +static inline void iput_readcount(struct inode *inode)
    +{
    + return;
    +}
    +static inline void iget_readcount(struct inode *inode)
    +{
    + return;
    +}
    +#endif
    extern int do_pipe_flags(int *, int);
    extern struct file *create_read_pipe(struct file *f, int flags);
    extern struct file *create_write_pipe(int flags);
    diff --git a/security/integrity/ima/Makefile b/security/integrity/ima/Makefile
    index 787c4cb..131eb1f 100644
    --- a/security/integrity/ima/Makefile
    +++ b/security/integrity/ima/Makefile
    @@ -6,4 +6,4 @@
    obj-$(CONFIG_IMA) += ima.o

    ima-y := ima_fs.o ima_queue.o ima_init.o ima_main.o ima_crypto.o ima_api.o \
    - ima_policy.o ima_iint.o ima_audit.o
    + ima_policy.o ima_iint.o ima_audit.o ima_readcount.o
    diff --git a/security/integrity/ima/ima_readcount.c b/security/integrity/ima/ima_readcount.c
    new file mode 100644
    index 0000000..6ee1163
    --- /dev/null
    +++ b/security/integrity/ima/ima_readcount.c
    @@ -0,0 +1,32 @@
    +/*
    + * Copyright (C) 2010 IBM Corporation
    + *
    + * Authors:
    + * Mimi Zohar <zohar@us.ibm.com>
    + *
    + * This program is free software; you can redistribute it and/or
    + * modify it under the terms of the GNU General Public License as
    + * published by the Free Software Foundation, version 2 of the
    + * License.
    + */
    +#include <linux/module.h>
    +#include <linux/spinlock.h>
    +#include <linux/fs.h>
    +
    +void iput_readcount(struct inode *inode)
    +{
    + spin_lock(&inode->i_lock);
    + if (unlikely(inode->i_readcount == 0))
    + printk(KERN_INFO "i_readcount: imbalance ino %ld\n",
    + inode->i_ino);
    + else
    + inode->i_readcount--;
    + spin_unlock(&inode->i_lock);
    +}
    +
    +void iget_readcount(struct inode *inode)
    +{
    + spin_lock(&inode->i_lock);
    + inode->i_readcount++;
    + spin_unlock(&inode->i_lock);
    +}
    --
    1.7.2.2


    \
     
     \ /
      Last update: 2010-10-29 00:05    [W:2.631 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site