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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 21 Dec 2008 16:48:37 +0100
From:	Bastian Blank <bastian@...di.eu.org>
To:	John Ogness <dazukocode@...ess.net>
Cc:	linux-kernel@...r.kernel.org, viro@...iv.linux.org.uk,
	malware-list@...ts.printk.net, eparis@...hat.com,
	hch@...radead.org, alan@...rguk.ukuu.org.uk
Subject: Re: [PATCH 1/5] VFS: DazukoFS, stackable-fs, file access control

On Sun, Dec 21, 2008 at 03:56:42PM +0100, John Ogness wrote:
> +#ifndef __DAZUKOFS_FS_H
> +#define __DAZUKOFS_FS_H

There are several (okay, all) includes missing.

> +static inline
> +struct dazukofs_sb_info *GET_SB_INFO(struct super_block *upper_sb)

Coding-style.

> +static inline void SET_LOWER_INODE(struct inode *upper_inode,
> +				   struct inode *lower_inode)
> +{
> +	((struct dazukofs_inode_info *)
> +	 container_of(upper_inode, struct dazukofs_inode_info,
> +		      vfs_inode))->lower_inode = lower_inode;
> +}

Please make such cast cascades explicit:

| struct dazukofs_inode_info *info = container_of(...);
| info->lower_inode = lower_inode;

There are other people which want to read the code.

> +static int dazukofs_d_revalidate(struct dentry *dentry, struct nameidata *nd)
> +{
> +	struct vfsmount *lower_mnt;
> +	struct dentry *lower_dentry;
> +	struct vfsmount *vfsmount_save;
> +	struct dentry *dentry_save;
> +	int valid;
> +
> +	valid = 1;
> +
> +	lower_dentry = GET_LOWER_DENTRY(dentry);
> +
> +	if (!lower_dentry->d_op || !lower_dentry->d_op->d_revalidate)
> +		goto out;

Why do you use goto instead of return?

> +static int dazukofs_d_hash(struct dentry *dentry, struct qstr *name)
> +{
> +	struct dentry *lower_dentry = GET_LOWER_DENTRY(dentry);
> +
> +	if (!lower_dentry || !lower_dentry->d_op ||
> +	    !lower_dentry->d_op->d_hash) {
> +		return 0;
> +	}

You mix rather different coding styles through the whole code. Also why
do you say that lower_dentry can be 0 in _hash, but not in _revalidate?

> +static void dazukofs_d_release(struct dentry *dentry)
> +{
> +	if (GET_DENTRY_INFO(dentry)) {
> +		dput(GET_LOWER_DENTRY(dentry));
> +		mntput(GET_LOWER_MNT(dentry));

Why do you push anything out in other functions while making it explicit
would make it much easier readable?

Bastian

-- 
Killing is stupid; useless!
		-- McCoy, "A Private Little War", stardate 4211.8
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ