mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 20:32:04 +09:00
ANDROID: sdcardfs: Use case insensitive hash function
Case insensitive comparisons don't help us much if we hash to different buckets... Signed-off-by: Daniel Rosenberg <drosen@google.com> bug: 36004503 Change-Id: I91e00dbcd860a709cbd4f7fd7fc6d855779f3285
This commit is contained in:
committed by
Amit Pundir
parent
52d522b505
commit
989624c14f
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "sdcardfs.h"
|
||||
#include <linux/hashtable.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/radix-tree.h>
|
||||
#include <linux/dcache.h>
|
||||
@@ -44,10 +45,18 @@ static DEFINE_HASHTABLE(ext_to_groupid, 8);
|
||||
|
||||
static struct kmem_cache *hashtable_entry_cachep;
|
||||
|
||||
static unsigned int full_name_case_hash(const unsigned char *name, unsigned int len)
|
||||
{
|
||||
unsigned long hash = init_name_hash();
|
||||
while (len--)
|
||||
hash = partial_name_hash(tolower(*name++), hash);
|
||||
return end_name_hash(hash);
|
||||
}
|
||||
|
||||
static void inline qstr_init(struct qstr *q, const char *name) {
|
||||
q->name = name;
|
||||
q->len = strlen(q->name);
|
||||
q->hash = full_name_hash(q->name, q->len);
|
||||
q->hash = full_name_case_hash(q->name, q->len);
|
||||
}
|
||||
|
||||
static inline int qstr_copy(const struct qstr *src, struct qstr *dest) {
|
||||
|
||||
Reference in New Issue
Block a user