From 1502a43a08d0648a6b03d89b7cf189f15bea8647 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 14 Mar 2011 18:47:47 +1100 Subject: [PATCH] ddf: set vcnum correctly when creating a new virtual device in conflist We weren't setting ->vcnum at all when an array was added. This meant that a subsequent device failure could be assigned to the wrong array. Reported-by: Albert Pauw Signed-off-by: NeilBrown --- super-ddf.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/super-ddf.c b/super-ddf.c index 8cc738ab..be15e43e 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -3417,6 +3417,14 @@ static void ddf_process_update(struct supertype *st, memcpy(&vcl->conf, vc, update->len); vcl->lba_offset = (__u64*) &vcl->conf.phys_refnum[mppe]; + for (ent = 0; + ent < __be16_to_cpu(ddf->virt->populated_vdes); + ent++) + if (memcmp(vc->guid, ddf->virt->entries[ent].guid, + DDF_GUID_LEN) == 0) { + vcl->vcnum = ent; + break; + } ddf->conflist = vcl; } /* Now make sure vlist is correct for each dl. */ -- 2.39.2