Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / lib / stackdepot.c
index f87d138e96724a43d219231bb98d6b1a863a0f0a..e513459a5601a5d19a5ad7461d8b137cd2d7a469 100644 (file)
@@ -163,6 +163,21 @@ static inline u32 hash_stack(unsigned long *entries, unsigned int size)
                               STACK_HASH_SEED);
 }
 
+/* Use our own, non-instrumented version of memcmp().
+ *
+ * We actually don't care about the order, just the equality.
+ */
+static inline
+int stackdepot_memcmp(const unsigned long *u1, const unsigned long *u2,
+                       unsigned int n)
+{
+       for ( ; n-- ; u1++, u2++) {
+               if (*u1 != *u2)
+                       return 1;
+       }
+       return 0;
+}
+
 /* Find a stack that is equal to the one stored in entries in the hash */
 static inline struct stack_record *find_stack(struct stack_record *bucket,
                                             unsigned long *entries, int size,
@@ -173,10 +188,8 @@ static inline struct stack_record *find_stack(struct stack_record *bucket,
        for (found = bucket; found; found = found->next) {
                if (found->hash == hash &&
                    found->size == size &&
-                   !memcmp(entries, found->entries,
-                           size * sizeof(unsigned long))) {
+                   !stackdepot_memcmp(entries, found->entries, size))
                        return found;
-               }
        }
        return NULL;
 }