Fix: use condition's type to compute its hash
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 17 Aug 2018 17:25:53 +0000 (13:25 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 24 Aug 2018 01:15:03 +0000 (21:15 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/notification-thread-events.c
src/common/hashtable/utils.c

index 98757737dbfd2d13357d62f0c2a20a5b45683163..e55c0668ad46449324abab34b491f239cb26e7ce 100644 (file)
@@ -294,12 +294,15 @@ static
 unsigned long lttng_condition_buffer_usage_hash(
        const struct lttng_condition *_condition)
 {
-       unsigned long hash = 0;
+       unsigned long hash;
+       unsigned long condition_type;
        struct lttng_condition_buffer_usage *condition;
 
        condition = container_of(_condition,
                        struct lttng_condition_buffer_usage, parent);
 
+       condition_type = (unsigned long) condition->parent.type;
+       hash = hash_key_ulong((void *) condition_type, lttng_ht_seed);
        if (condition->session_name) {
                hash ^= hash_key_str(condition->session_name, lttng_ht_seed);
        }
@@ -329,13 +332,16 @@ static
 unsigned long lttng_condition_session_consumed_size_hash(
        const struct lttng_condition *_condition)
 {
-       unsigned long hash = 0;
+       unsigned long hash;
+       unsigned long condition_type =
+                       (unsigned long) LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE;
        struct lttng_condition_session_consumed_size *condition;
        uint64_t val;
 
        condition = container_of(_condition,
                        struct lttng_condition_session_consumed_size, parent);
 
+       hash = hash_key_ulong((void *) condition_type, lttng_ht_seed);
        if (condition->session_name) {
                hash ^= hash_key_str(condition->session_name, lttng_ht_seed);
        }
@@ -344,6 +350,7 @@ unsigned long lttng_condition_session_consumed_size_hash(
        return hash;
 }
 
+
 /*
  * The lttng_condition hashing code is kept in this file (rather than
  * condition.c) since it makes use of GPLv2 code (hashtable utils), which we
index c9d75e289a0cf6f4d39a85b3f98378ff717d6141..9a84265a0b324b587470c350abd9fc989476b8d7 100644 (file)
@@ -469,6 +469,7 @@ unsigned long hash_key_u64(const void *_key, unsigned long seed)
 #if (CAA_BITS_PER_LONG == 64)
 /*
  * Hash function for number value.
+ * Pass the value itself as the key, not its address.
  */
 LTTNG_HIDDEN
 unsigned long hash_key_ulong(const void *_key, unsigned long seed)
@@ -479,6 +480,7 @@ unsigned long hash_key_ulong(const void *_key, unsigned long seed)
 #else
 /*
  * Hash function for number value.
+ * Pass the value itself as the key, not its address.
  */
 LTTNG_HIDDEN
 unsigned long hash_key_ulong(const void *_key, unsigned long seed)
This page took 0.029558 seconds and 4 git commands to generate.