Fix hardware entry matching code
authorBenjamin Marzinski <bmarzins@redhat.com>
Thu, 2 May 2013 21:46:27 +0000 (16:46 -0500)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Mon, 6 May 2013 19:40:59 +0000 (21:40 +0200)
When a user defined hardware table entry's identifiers exactly
match a built-in one's, the built-in one is removed, and the list
is rescaned.  However, the built-in entry is not freed, and on the
rescan, the first user defined entry is treated as a built-in
entry. This patch frees the built-in entry, and decrements the
number of built-in entries, so that the rescan works as expected.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
libmultipath/config.c

index 25d3e3d..da676df 100644 (file)
@@ -436,6 +436,8 @@ restart:
                        merge_hwe(hwe2, hwe1);
                        if (hwe_strmatch(hwe2, hwe1) == 0) {
                                vector_del_slot(hw, i);
+                               free_hwe(hwe1);
+                               n -= 1;
                                /*
                                 * Play safe here; we have modified
                                 * the original vector so the outer