[linux-cifs-client] [PATCH] cifs: fix dentry hash calculation for case-insensitive mounts

Shirish Pargaonkar shirishpargaonkar at gmail.com
Fri Feb 5 13:31:50 MST 2010


On Fri, Feb 5, 2010 at 12:30 PM, Jeff Layton <jlayton at redhat.com> wrote:
> case-insensitive mounts shouldn't use full_name_hash(). Make sure we
> use the parent dentry's d_hash routine when one is set.
>
> Reported-by: Dave Kleikamp <shaggy at linux.vnet.ibm.com>
> Signed-off-by: Jeff Layton <jlayton at redhat.com>
> ---
>  fs/cifs/readdir.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
> index f5618f8..c343b14 100644
> --- a/fs/cifs/readdir.c
> +++ b/fs/cifs/readdir.c
> @@ -77,6 +77,11 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name,
>
>        cFYI(1, ("For %s", name->name));
>
> +       if (parent->d_op && parent->d_op->d_hash)
> +               parent->d_op->d_hash(parent, name);
> +       else
> +               name->hash = full_name_hash(name->name, name->len);
> +
>        dentry = d_lookup(parent, name);
>        if (dentry) {
>                /* FIXME: check for inode number changes? */
> @@ -671,8 +676,6 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,
>                pqst->name = filename;
>                pqst->len = len;
>        }
> -       pqst->hash = full_name_hash(pqst->name, pqst->len);
> -/*     cFYI(1, ("filldir on %s",pqst->name));  */
>        return rc;
>  }
>
> --
> 1.6.6
>
> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client
>

Jeff, these are functions, full_name_hash etc. treat name->name and
name->len as
character names strings and character name string lenghts, is that correct?
There is not unicode consideration while generating hash values at this point?


More information about the linux-cifs-client mailing list