[PATCH] Open Firmware device tree virtual filesystem

Pekka Enberg penberg at cs.helsinki.fi
Sun Dec 31 08:24:15 EST 2006


On 12/31/06, Mitch Bradley <wmb at firmworks.com> wrote:
> diff --git a/arch/i386/kernel/ofw_fs.c b/arch/i386/kernel/ofw_fs.c
> new file mode 100644
> index 0000000..30ca359
> --- /dev/null
> +++ b/arch/i386/kernel/ofw_fs.c
> @@ -0,0 +1,261 @@
> +/* 1275 in little-endian ASCII (for IEEE 1275 - the Open Firmware Standard) */
> +#define OFWFS_MAGIC 0x35373231

Please put this in <linux/magic.h>

On 12/31/06, Mitch Bradley <wmb at firmworks.com> wrote:
> +       case S_IFREG:
> +               inode->i_fop = &ofwfs_property_operations;
> +               inode->i_bytes = ((struct propval *)data)->length;
> +               inode->i_size = (loff_t)(((struct propval *)data)->length);

As you need the struct twice, use a local variable.

On 12/31/06, Mitch Bradley <wmb at firmworks.com> wrote:
> +static int ofwfs_create_props(struct super_block *sb, struct dentry *dir,
> +               phandle node)
> +{
> +       char propname[32];
> +       int security, len;
> +       struct propval *propval;
> +       int ret = 0;
> +       int flag;
> +
> +       propname[0] = '\0';
> +
> +       while ((void)callofw("nextprop", 3, 1, node, propname, propname,
> +                             &flag), flag == 1) {

Please do the call within the loop body and use an explicit bereak.

> +               security = strncmp(propname, "security-", 9) == 0;
> +               len = 0;

Redundant assignment, no?

> +               if (!security)
> +                       (void)callofw("getproplen", 2, 1, node, propname, &len);

We don't use void casts to suppress return value in Linux. You can
just drop it (elsewhere too).

On 12/31/06, Mitch Bradley <wmb at firmworks.com> wrote:
> +out:
> +       if (ret) {
> +               WARN_ON(1);
> +/*
> +               ofwfs_remove_props(sb, dir);
> +*/
> +       }

Hmm?

On 12/31/06, Mitch Bradley <wmb at firmworks.com> wrote:
> +static int __init ofwfs_init(void)
> +{
> +       int ret;
> +
> +       ret = register_filesystem(&ofwfs_type);
> +       if (ret)
> +               return ret;
> +
> +       kern_mount(&ofwfs_type);

kern_mount can fail so you'd better do IS_ERR/PTR_ERR here.

> diff --git a/include/asm-i386/callofw.h b/include/asm-i386/callofw.h
> new file mode 100644
> index 0000000..594cb63
> --- /dev/null
> +++ b/include/asm-i386/callofw.h
> +#include <linux/types.h>
> +
> +typedef void *phandle;

The typedef seems useless and confusing at best. Can we drop it?



More information about the Devel mailing list