diff options
-rw-r--r-- | fs/cramfs/cramfs.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/fs/cramfs/cramfs.c b/fs/cramfs/cramfs.c index e7f7495435..022dff4f20 100644 --- a/fs/cramfs/cramfs.c +++ b/fs/cramfs/cramfs.c @@ -365,20 +365,14 @@ static int cramfs_stat(struct device_d *_dev, const char *filename, struct stat char *f; unsigned long offset; - if (strlen (filename) == 0 || !strcmp (filename, "/")) { - /* Root directory. Use root inode in super block */ - offset = CRAMFS_GET_OFFSET (&(priv->super.root)) << 2; - } else { - f = strdup(filename); - offset = cramfs_resolve (dev->map_base, - CRAMFS_GET_OFFSET (&(priv->super.root)) << 2, - CRAMFS_24 (priv->super.root.size), 1, - strtok (f, "/")); - - free(f); - } + f = strdup(filename); + offset = cramfs_resolve (dev->map_base, + CRAMFS_GET_OFFSET (&(priv->super.root)) << 2, + CRAMFS_24 (priv->super.root.size), 1, + strtok (f, "/")); + free(f); - if (offset < 0) + if (offset <= 0) return -ENOENT; inode = (struct cramfs_inode *) (dev->map_base + offset); |