devargs: fix list entry update
authorXueming Li <xuemingl@nvidia.com>
Sat, 17 Apr 2021 15:15:32 +0000 (23:15 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 19 Apr 2021 16:13:02 +0000 (18:13 +0200)
When inserting devargs that is already in list,
existing one was reset and replaced completely by new one,
the entry info was lost during copy.

This patch backups entry info before copy.

Fixes: 64051bb1f144 ("devargs: unify scratch buffer storage")

Reported-by: Jim Harris <james.r.harris@intel.com>
Signed-off-by: Xueming Li <xuemingl@nvidia.com>
lib/librte_eal/common/eal_common_devargs.c

index 4b5be80..b31ac87 100644 (file)
@@ -298,6 +298,7 @@ rte_devargs_insert(struct rte_devargs **da)
                if (strcmp(listed_da->bus->name, (*da)->bus->name) == 0 &&
                                strcmp(listed_da->name, (*da)->name) == 0) {
                        /* device already in devargs list, must be updated */
+                       (*da)->next = listed_da->next;
                        rte_devargs_reset(listed_da);
                        *listed_da = **da;
                        /* replace provided devargs with found one */