DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andy Green <andy@warmcat.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v2 01/18] lib/libtre_table: workaround hash function cast error
Date: Wed, 09 May 2018 09:30:55 +0800	[thread overview]
Message-ID: <152582945575.6809.1197897366448536704.stgit@localhost.localdomain> (raw)
In-Reply-To: <152582834896.6809.14521072557832633661.stgit@localhost.localdomain>

/home/agreen/projects/dpdk/lib/librte_table/rte_table_hash_cuckoo.c:
110:16: error: cast between incompatible function types from
‘rte_table_hash_op_hash’ {aka ‘long unsigned int (*)(void *, void *,
unsigned int,  long unsigned int)’} to ‘uint32_t (*)(const void *,
uint32_t,  uint32_t)’ {aka ‘unsigned int (*)(const void *, unsigned
int,  unsigned int)’} [-Werror=cast-function-type]   .hash_func =
(rte_hash_function)(p->f_hash),

The code seems to be quite broken.

It's casting this

typedef uint64_t (*rte_table_hash_op_hash)(
        void *key,
        void *key_mask,
        uint32_t key_size,
        uint64_t seed);

to this

typedef uint32_t (*rte_hash_function)(const void *key, uint32_t key_len,
                                      uint32_t init_val);

if the definition with 4 args is later called with a pointer
giving it three args, obviously it working is just an accident.  I
grepped around a bit and could not see it being cast back to
the original type before use; the uses I saw have three args.

I simply patch it to stop the build breaking, rather than fix it,
since I am not sure what a fix should look like considering the
whole code.

(It seems others are working on fixing this, so you probably don't
want to apply this.  However it's necessary for build to continue atm)

Signed-off-by: Andy Green <andy@warmcat.com>
---
 lib/librte_table/rte_table_hash_cuckoo.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_table/rte_table_hash_cuckoo.c b/lib/librte_table/rte_table_hash_cuckoo.c
index dcb4fe978..eca72b506 100644
--- a/lib/librte_table/rte_table_hash_cuckoo.c
+++ b/lib/librte_table/rte_table_hash_cuckoo.c
@@ -107,7 +107,7 @@ rte_table_hash_cuckoo_create(void *params,
 	struct rte_hash_parameters hash_cuckoo_params = {
 		.entries = p->n_keys,
 		.key_len = p->key_size,
-		.hash_func = (rte_hash_function)(p->f_hash),
+		.hash_func = (rte_hash_function)(void *)(p->f_hash),
 		.hash_func_init_val = p->seed,
 		.socket_id = socket_id,
 		.name = p->name

  reply	other threads:[~2018-05-09  1:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-09  1:30 [dpdk-dev] [PATCH v2 00/18] Fix build on gcc8 and various bugs Andy Green
2018-05-09  1:30 ` Andy Green [this message]
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 02/18] drivers/bus/pci: fix strncpy dangerous code Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 03/18] drivers/bus/dpaa: fix inconsistent struct alignment Andy Green
2018-05-09  8:06   ` Hemant Agrawal
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 04/18] drivers/net/axgbe: fix broken eeprom string comp Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 05/18] drivers/net/nfp/nfpcore: fix strncpy misuse Andy Green
2018-05-09  9:49   ` Alejandro Lucero
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 06/18] drivers/net/nfp/nfpcore: fix off-by-one and no NUL on strncpy use Andy Green
2018-05-09  9:53   ` Alejandro Lucero
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 07/18] drivers/net/nfp: don't memcpy out of source range Andy Green
2018-05-09  9:54   ` Alejandro Lucero
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 08/18] drivers/net/nfp: fix buffer overflow in fw_name Andy Green
2018-05-09 10:04   ` Alejandro Lucero
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 09/18] drivers/net/qede: fix strncpy constant and NUL Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 10/18] drivers/net/qede: fix broken strncpy Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 11/18] drivers/net/sfc: fix strncpy length Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 12/18] drivers/net/sfc: fix strncpy size and NUL Andy Green
2018-05-09  1:31 ` [dpdk-dev] [PATCH v2 13/18] drivers/net/vdev: readlink inputs cannot be aliased Andy Green
2018-05-09 15:33   ` Stephen Hemminger
2018-05-09  1:32 ` [dpdk-dev] [PATCH v2 14/18] drivers/net/vdev: fix 3 x strncpy misuse Andy Green
2018-05-09  1:32 ` [dpdk-dev] [PATCH v2 15/18] app/test-pmd: can't find include Andy Green
2018-05-09  1:32 ` [dpdk-dev] [PATCH v2 16/18] app/proc-info: fix sprintf overrun bug Andy Green
2018-05-09  1:32 ` [dpdk-dev] [PATCH v2 17/18] app/test-bbdev: test-bbdev: strcpy ok for allocated string Andy Green
2018-05-09  1:32 ` [dpdk-dev] [PATCH v2 18/18] app/test-bbdev: " Andy Green

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=152582945575.6809.1197897366448536704.stgit@localhost.localdomain \
    --to=andy@warmcat.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).