Re: [PATCH v2] Add security.* XATTR support for the UBIFS

From: Stephen Smalley
Date: Tue Apr 10 2012 - 08:46:32 EST


On Mon, 2012-04-09 at 16:51 -0700, subodh.nijsure@xxxxxxxxx wrote:
> From: Subodh Nijsure <snijsure@xxxxxxxxxxxx>
>
> Also fix couple of bugs in UBIFS extended attribute length calculation.
>
> Changes Since V1:
> Instead of just handling security.selinux extended attribute handle
> all security.* attributes.
>
> TESTING: Tested on MX28 based platforms using Micron MT29F2G08ABAEAH4 NAND
> With these change we are able to label UBIFS filesystem with
> security.selinux and run system with selinux enabled.
> This change also allows one to set other security.* extended
> attributesr, such as security.smack security.evm, security.ima
> Ran integck test on UBI filesystem.
>
> Signed-off-by: Subodh Nijsure <snijsure@xxxxxxxxxxxx>
> ---
> fs/ubifs/dir.c | 4 ++
> fs/ubifs/file.c | 6 ++
> fs/ubifs/journal.c | 12 +++-
> fs/ubifs/super.c | 3 +
> fs/ubifs/ubifs.h | 9 +++
> fs/ubifs/xattr.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++----
> 6 files changed, 167 insertions(+), 14 deletions(-)
>
> diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> index ec9f187..f4e06c4 100644
> --- a/fs/ubifs/dir.c
> +++ b/fs/ubifs/dir.c
> @@ -293,6 +293,7 @@ static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
> ubifs_release_budget(c, &req);
> insert_inode_hash(inode);
> d_instantiate(dentry, inode);
> + ubifs_init_security(dir, inode, &dentry->d_name);
> return 0;
>
> out_cancel:

The ubifs_init_security() should occur before d_instantiate() so that
the inode is not accessible to other threads before its security
attributes have been set. And if it fails, you would ideally drop the
inode altogether and return an error to the creating process.

--
Stephen Smalley
National Security Agency

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/