hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/security/selinux/ss/symtab.c
....@@ -9,7 +9,7 @@
99 #include <linux/errno.h>
1010 #include "symtab.h"
1111
12
-static unsigned int symhash(struct hashtab *h, const void *key)
12
+static unsigned int symhash(const void *key)
1313 {
1414 const char *p, *keyp;
1515 unsigned int size;
....@@ -20,10 +20,10 @@
2020 size = strlen(keyp);
2121 for (p = keyp; (p - keyp) < size; p++)
2222 val = (val << 4 | (val >> (8*sizeof(unsigned int)-4))) ^ (*p);
23
- return val & (h->size - 1);
23
+ return val;
2424 }
2525
26
-static int symcmp(struct hashtab *h, const void *key1, const void *key2)
26
+static int symcmp(const void *key1, const void *key2)
2727 {
2828 const char *keyp1, *keyp2;
2929
....@@ -32,13 +32,23 @@
3232 return strcmp(keyp1, keyp2);
3333 }
3434
35
+static const struct hashtab_key_params symtab_key_params = {
36
+ .hash = symhash,
37
+ .cmp = symcmp,
38
+};
3539
3640 int symtab_init(struct symtab *s, unsigned int size)
3741 {
38
- s->table = hashtab_create(symhash, symcmp, size);
39
- if (!s->table)
40
- return -ENOMEM;
4142 s->nprim = 0;
42
- return 0;
43
+ return hashtab_init(&s->table, size);
4344 }
4445
46
+int symtab_insert(struct symtab *s, char *name, void *datum)
47
+{
48
+ return hashtab_insert(&s->table, name, datum, symtab_key_params);
49
+}
50
+
51
+void *symtab_search(struct symtab *s, const char *name)
52
+{
53
+ return hashtab_search(&s->table, name, symtab_key_params);
54
+}