]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
net, lib: kill arch_fast_hash library bits
authorDaniel Borkmann <dborkman@redhat.com>
Wed, 10 Dec 2014 15:33:12 +0000 (16:33 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Dec 2014 20:17:46 +0000 (15:17 -0500)
As there are now no remaining users of arch_fast_hash(), lets kill
it entirely.

This basically reverts commit 71ae8aac3e19 ("lib: introduce arch
optimized hash library") and follow-up work, that is f.e., commit
237217546d44 ("lib: hash: follow-up fixups for arch hash"),
commit e3fec2f74f7f ("lib: Add missing arch generic-y entries for
asm-generic/hash.h") and last but not least commit 6a02652df511
("perf tools: Fix include for non x86 architectures").

Cc: Francesco Fusco <fusco@ntop.org>
Cc: Thomas Graf <tgraf@suug.ch>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
36 files changed:
arch/alpha/include/asm/Kbuild
arch/arc/include/asm/Kbuild
arch/arm/include/asm/Kbuild
arch/arm64/include/asm/Kbuild
arch/avr32/include/asm/Kbuild
arch/blackfin/include/asm/Kbuild
arch/c6x/include/asm/Kbuild
arch/cris/include/asm/Kbuild
arch/frv/include/asm/Kbuild
arch/hexagon/include/asm/Kbuild
arch/ia64/include/asm/Kbuild
arch/m32r/include/asm/Kbuild
arch/m68k/include/asm/Kbuild
arch/metag/include/asm/Kbuild
arch/microblaze/include/asm/Kbuild
arch/mips/include/asm/Kbuild
arch/mn10300/include/asm/Kbuild
arch/openrisc/include/asm/Kbuild
arch/parisc/include/asm/Kbuild
arch/powerpc/include/asm/Kbuild
arch/s390/include/asm/Kbuild
arch/score/include/asm/Kbuild
arch/sh/include/asm/Kbuild
arch/sparc/include/asm/Kbuild
arch/tile/include/asm/Kbuild
arch/um/include/asm/Kbuild
arch/unicore32/include/asm/Kbuild
arch/x86/include/asm/hash.h [deleted file]
arch/x86/lib/Makefile
arch/x86/lib/hash.c [deleted file]
arch/xtensa/include/asm/Kbuild
include/asm-generic/hash.h [deleted file]
include/linux/hash.h
lib/Makefile
lib/hash.c [deleted file]
tools/perf/util/include/asm/hash.h [deleted file]

index 25b49725df07d7ecad8e222060486e9d746925b9..76aeb8fa551a83fa3b84c15b46fd87056e297a21 100644 (file)
@@ -3,7 +3,6 @@
 generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index b8fffc1a2ac237b8feca4a42cc0fd036a9bc8ba2..be0c39e76f7cdf8855aacf31d24e128fcccd207b 100644 (file)
@@ -12,7 +12,6 @@ generic-y += fb.h
 generic-y += fcntl.h
 generic-y += ftrace.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index 70cd84eb7fda0c294c004d83841462bb4df799a5..fe74c0d1e485f01588ec21a927a852a0b0ca156e 100644 (file)
@@ -7,7 +7,6 @@ generic-y += current.h
 generic-y += emergency-restart.h
 generic-y += errno.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += ioctl.h
 generic-y += ipcbuf.h
 generic-y += irq_regs.h
index dc770bd4f5a53c0e9a32d97817c55d6698ec87c1..6b61091c7f4cefdd31f92722a0f81c0e41393762 100644 (file)
@@ -14,7 +14,6 @@ generic-y += early_ioremap.h
 generic-y += emergency-restart.h
 generic-y += errno.h
 generic-y += ftrace.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index 2a71b1cb984821418f1f0f5b84fb19c9bbd6e72f..528d70d47a540d2e0a38c49af916bd442a240661 100644 (file)
@@ -7,7 +7,6 @@ generic-y += div64.h
 generic-y += emergency-restart.h
 generic-y += exec.h
 generic-y += futex.h
-generic-y += hash.h
 generic-y += irq_regs.h
 generic-y += irq_work.h
 generic-y += local.h
index 46ed6bb9c6798a6ff3ff749f38b0f255e0b64d6e..4bd3c3cfc9ab3a9d4a2dfe8190818f09ffa80db9 100644 (file)
@@ -10,7 +10,6 @@ generic-y += emergency-restart.h
 generic-y += errno.h
 generic-y += fb.h
 generic-y += futex.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ipcbuf.h
index e77e0c1dbe75ee81a189f4b74702a7110c1328fa..2de73391b81eeee4e1eefc95e9e5d5d666f13527 100644 (file)
@@ -15,7 +15,6 @@ generic-y += exec.h
 generic-y += fb.h
 generic-y += fcntl.h
 generic-y += futex.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += io.h
 generic-y += ioctl.h
index 2ca489eaadd3092efa8bd6a9bba6a808719d193f..d5f124832fd1e0f337259d5467eb0cd286fb91dd 100644 (file)
@@ -7,7 +7,6 @@ generic-y += barrier.h
 generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += kvm_para.h
 generic-y += linkage.h
index 3caf05cabfc520a06506e6318203421ad7014f66..e3f81b53578e3b1b6f4f24f2a4a3acf88a076e16 100644 (file)
@@ -2,7 +2,6 @@
 generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 5f234a5a23201319e26e9972abd1a31ab44f2d9c..c7a99f860b40f991273273e2a986bf294119416b 100644 (file)
@@ -16,7 +16,6 @@ generic-y += fb.h
 generic-y += fcntl.h
 generic-y += ftrace.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index 747320be9d0e1c4a94bc72cad21ed3b44ab2c3f8..9b41b4bcc073b99737cdda269a4f9688de5ab11a 100644 (file)
@@ -1,7 +1,6 @@
 
 generic-y += clkdev.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += kvm_para.h
 generic-y += mcs_spinlock.h
index 3796801d6e0cbe4eb862365b7ce149ebb49ae543..2edc793372fc139cfcdef46761b12abd4c96f68d 100644 (file)
@@ -2,7 +2,6 @@
 generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += module.h
index dbaf9f3065e8da6802e4beb32706a936264d597c..9b6c691874bd5d4f309df4a8e5e90b3bc0087bf2 100644 (file)
@@ -6,7 +6,6 @@ generic-y += device.h
 generic-y += emergency-restart.h
 generic-y += errno.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ipcbuf.h
index 7b8111c8f937ba5d5f0820ad64e56cf1e5e4ef6b..0bf5d525b945d3627c05bd1328b86bfb05007dd0 100644 (file)
@@ -13,7 +13,6 @@ generic-y += fb.h
 generic-y += fcntl.h
 generic-y += futex.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index 448143b8cabd1a8f5e5460d4c79461b0ef6b6bc6..ab564a6db5c32a4dd7ea73361ec0481abacb294f 100644 (file)
@@ -4,7 +4,6 @@ generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += device.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 72e1cf1cab0057f6f5f9fae5dba18308afbc140e..200efeac41813c2a17e237156c6410253f488d8b 100644 (file)
@@ -3,7 +3,6 @@ generic-y += cputime.h
 generic-y += current.h
 generic-y += dma-contiguous.h
 generic-y += emergency-restart.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
index 54a062cb9f2cb9236f4bdc9cef3e028777b11f31..f892d9de47d92656646f0a4bd04f3a5f7268a2a7 100644 (file)
@@ -3,7 +3,6 @@ generic-y += barrier.h
 generic-y += clkdev.h
 generic-y += cputime.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 89b61d7dc790ee7b0127072b1a66d181eae11522..91f1f360a7c4da69fe283ede1fde899bad67c01f 100644 (file)
@@ -25,7 +25,6 @@ generic-y += fcntl.h
 generic-y += ftrace.h
 generic-y += futex.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index ffb024b8423fa55a282fbfa05fbf4fb13464d4c4..8686237a3c3c55251070264c35190c391fb594eb 100644 (file)
@@ -7,7 +7,6 @@ generic-y += device.h
 generic-y += div64.h
 generic-y += emergency-restart.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += irq_regs.h
 generic-y += irq_work.h
index 31e8f59aff38894c0b16629b2ce7cc18fecbfb2c..382b28e364dcdd5130c70737a5afa4c609785bd4 100644 (file)
@@ -1,6 +1,5 @@
 
 generic-y += clkdev.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 773f866765882fc3de528298c3e97ff9095f5f72..c631f98fd5242b1837fcc0525286fdcd9ec1771f 100644 (file)
@@ -1,7 +1,6 @@
 
 
 generic-y += clkdev.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 46461c19f284fbeef42e2f4bdbd3b1381613cac8..83ed116d414c1a9e66405d3f079eb708f8390759 100644 (file)
@@ -5,7 +5,6 @@ header-y +=
 generic-y += barrier.h
 generic-y += clkdev.h
 generic-y += cputime.h
-generic-y += hash.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += preempt.h
index 5a6c9acff0d21eea4fcb802624eecbe854da9400..654ebb6bd5d8daddc6832b81a1d69d1de4bb404a 100644 (file)
@@ -8,7 +8,6 @@ generic-y += emergency-restart.h
 generic-y += errno.h
 generic-y += exec.h
 generic-y += fcntl.h
-generic-y += hash.h
 generic-y += ioctl.h
 generic-y += ipcbuf.h
 generic-y += irq_regs.h
index f5f94ce1692c42ddab2088c1c0a8d480a6294bfa..94f36e7086a7699ae4ce5f9c6cafcb2391759243 100644 (file)
@@ -6,7 +6,6 @@ generic-y += cputime.h
 generic-y += div64.h
 generic-y += emergency-restart.h
 generic-y += exec.h
-generic-y += hash.h
 generic-y += irq_regs.h
 generic-y += irq_work.h
 generic-y += linkage.h
index e6462b8a62842534f8e8ffe9eb628e586aaf8ec3..b4c488b657456f3e5a4fa4b74c40a3a427b5cc28 100644 (file)
@@ -11,7 +11,6 @@ generic-y += errno.h
 generic-y += exec.h
 generic-y += fb.h
 generic-y += fcntl.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
index 244b12c8cb391b9e7fec48c2846a818a9e4db93e..9176fa11d49b917e8d417b1fcdc7daaa271d9cfd 100644 (file)
@@ -10,7 +10,6 @@ generic-y += exec.h
 generic-y += ftrace.h
 generic-y += futex.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += io.h
 generic-y += irq_regs.h
index 5a2bb53faa42137607feafad23e3896e9249d078..3e0c19d0f4c5d9e5f4bef9d8cbff9283f9259738 100644 (file)
@@ -16,7 +16,6 @@ generic-y += fcntl.h
 generic-y += ftrace.h
 generic-y += futex.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += hw_irq.h
 generic-y += ioctl.h
 generic-y += ioctls.h
diff --git a/arch/x86/include/asm/hash.h b/arch/x86/include/asm/hash.h
deleted file mode 100644 (file)
index e8c58f8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _ASM_X86_HASH_H
-#define _ASM_X86_HASH_H
-
-struct fast_hash_ops;
-extern void setup_arch_fast_hash(struct fast_hash_ops *ops);
-
-#endif /* _ASM_X86_HASH_H */
index db92793b7e23edaf7a252fe3d72daf4f893d5c31..1530afb07c85443aac9c6e1949efd4d58e8fb51a 100644 (file)
@@ -23,7 +23,7 @@ lib-y += memcpy_$(BITS).o
 lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
 lib-$(CONFIG_INSTRUCTION_DECODER) += insn.o inat.o
 
-obj-y += msr.o msr-reg.o msr-reg-export.o hash.o
+obj-y += msr.o msr-reg.o msr-reg-export.o
 
 ifeq ($(CONFIG_X86_32),y)
         obj-y += atomic64_32.o
diff --git a/arch/x86/lib/hash.c b/arch/x86/lib/hash.c
deleted file mode 100644 (file)
index ff4fa51..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Some portions derived from code covered by the following notice:
- *
- * Copyright (c) 2010-2013 Intel Corporation. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
- *   * Neither the name of Intel Corporation nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <linux/hash.h>
-#include <linux/init.h>
-
-#include <asm/processor.h>
-#include <asm/cpufeature.h>
-#include <asm/hash.h>
-
-static inline u32 crc32_u32(u32 crc, u32 val)
-{
-#ifdef CONFIG_AS_CRC32
-       asm ("crc32l %1,%0\n" : "+r" (crc) : "rm" (val));
-#else
-       asm (".byte 0xf2, 0x0f, 0x38, 0xf1, 0xc1" : "+a" (crc) : "c" (val));
-#endif
-       return crc;
-}
-
-static u32 intel_crc4_2_hash(const void *data, u32 len, u32 seed)
-{
-       const u32 *p32 = (const u32 *) data;
-       u32 i, tmp = 0;
-
-       for (i = 0; i < len / 4; i++)
-               seed = crc32_u32(seed, *p32++);
-
-       switch (len & 3) {
-       case 3:
-               tmp |= *((const u8 *) p32 + 2) << 16;
-               /* fallthrough */
-       case 2:
-               tmp |= *((const u8 *) p32 + 1) << 8;
-               /* fallthrough */
-       case 1:
-               tmp |= *((const u8 *) p32);
-               seed = crc32_u32(seed, tmp);
-               break;
-       }
-
-       return seed;
-}
-
-static u32 intel_crc4_2_hash2(const u32 *data, u32 len, u32 seed)
-{
-       const u32 *p32 = (const u32 *) data;
-       u32 i;
-
-       for (i = 0; i < len; i++)
-               seed = crc32_u32(seed, *p32++);
-
-       return seed;
-}
-
-void __init setup_arch_fast_hash(struct fast_hash_ops *ops)
-{
-       if (cpu_has_xmm4_2) {
-               ops->hash  = intel_crc4_2_hash;
-               ops->hash2 = intel_crc4_2_hash2;
-       }
-}
index 105d38922c442624fd4bfadb5a5e475857adf041..86a9ab2e2ca92c3b98ff6c2540528bcc85cb0d38 100644 (file)
@@ -9,7 +9,6 @@ generic-y += errno.h
 generic-y += exec.h
 generic-y += fcntl.h
 generic-y += hardirq.h
-generic-y += hash.h
 generic-y += ioctl.h
 generic-y += irq_regs.h
 generic-y += irq_work.h
diff --git a/include/asm-generic/hash.h b/include/asm-generic/hash.h
deleted file mode 100644 (file)
index b631284..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef __ASM_GENERIC_HASH_H
-#define __ASM_GENERIC_HASH_H
-
-struct fast_hash_ops;
-static inline void setup_arch_fast_hash(struct fast_hash_ops *ops)
-{
-}
-
-#endif /* __ASM_GENERIC_HASH_H */
index d0494c399392c801dfce96d8a141d935d750a22e..1afde47e1528c36ad8613c2e56fb23d1f614e476 100644 (file)
@@ -15,7 +15,6 @@
  */
 
 #include <asm/types.h>
-#include <asm/hash.h>
 #include <linux/compiler.h>
 
 /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */
@@ -84,38 +83,4 @@ static inline u32 hash32_ptr(const void *ptr)
        return (u32)val;
 }
 
-struct fast_hash_ops {
-       u32 (*hash)(const void *data, u32 len, u32 seed);
-       u32 (*hash2)(const u32 *data, u32 len, u32 seed);
-};
-
-/**
- *     arch_fast_hash - Caclulates a hash over a given buffer that can have
- *                      arbitrary size. This function will eventually use an
- *                      architecture-optimized hashing implementation if
- *                      available, and trades off distribution for speed.
- *
- *     @data: buffer to hash
- *     @len: length of buffer in bytes
- *     @seed: start seed
- *
- *     Returns 32bit hash.
- */
-extern u32 arch_fast_hash(const void *data, u32 len, u32 seed);
-
-/**
- *     arch_fast_hash2 - Caclulates a hash over a given buffer that has a
- *                       size that is of a multiple of 32bit words. This
- *                       function will eventually use an architecture-
- *                       optimized hashing implementation if available,
- *                       and trades off distribution for speed.
- *
- *     @data: buffer to hash (must be 32bit padded)
- *     @len: number of 32bit words
- *     @seed: start seed
- *
- *     Returns 32bit hash.
- */
-extern u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed);
-
 #endif /* _LINUX_HASH_H */
index 0211d2bd5e17551856da7ca97aea0849528b2ead..4b9baa45a4d9ab64802030f1e496359eb622ed97 100644 (file)
@@ -26,7 +26,7 @@ obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
         bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
         gcd.o lcm.o list_sort.o uuid.o flex_array.o iovec.o clz_ctz.o \
         bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o kfifo.o \
-        percpu-refcount.o percpu_ida.o hash.o rhashtable.o reciprocal_div.o
+        percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o
 obj-y += string_helpers.o
 obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o
 obj-y += kstrtox.o
diff --git a/lib/hash.c b/lib/hash.c
deleted file mode 100644 (file)
index fea973f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* General purpose hashing library
- *
- * That's a start of a kernel hashing library, which can be extended
- * with further algorithms in future. arch_fast_hash{2,}() will
- * eventually resolve to an architecture optimized implementation.
- *
- * Copyright 2013 Francesco Fusco <ffusco@redhat.com>
- * Copyright 2013 Daniel Borkmann <dborkman@redhat.com>
- * Copyright 2013 Thomas Graf <tgraf@redhat.com>
- * Licensed under the GNU General Public License, version 2.0 (GPLv2)
- */
-
-#include <linux/jhash.h>
-#include <linux/hash.h>
-#include <linux/cache.h>
-
-static struct fast_hash_ops arch_hash_ops __read_mostly = {
-       .hash  = jhash,
-       .hash2 = jhash2,
-};
-
-u32 arch_fast_hash(const void *data, u32 len, u32 seed)
-{
-       return arch_hash_ops.hash(data, len, seed);
-}
-EXPORT_SYMBOL_GPL(arch_fast_hash);
-
-u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed)
-{
-       return arch_hash_ops.hash2(data, len, seed);
-}
-EXPORT_SYMBOL_GPL(arch_fast_hash2);
-
-static int __init hashlib_init(void)
-{
-       setup_arch_fast_hash(&arch_hash_ops);
-       return 0;
-}
-early_initcall(hashlib_init);
diff --git a/tools/perf/util/include/asm/hash.h b/tools/perf/util/include/asm/hash.h
deleted file mode 100644 (file)
index d82b170..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef __ASM_GENERIC_HASH_H
-#define __ASM_GENERIC_HASH_H
-
-/* Stub */
-
-#endif /* __ASM_GENERIC_HASH_H */