vlserver: Use correct base value when replacing

When we're removing existing address entries the code calculates
a base and index value for each entry that we're removing an address
from. However, it then _uses_ a previously calculated base value,
with the new index. This works fine if the old base and the new base
match, but if they don't, chaos will ensue.

Fix to always use matched base and index pairs.

Change-Id: Ia592abdc1c58b5cf5776bb24e67aee708275a9b0
Reviewed-on: http://gerrit.openafs.org/4771
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
Simon Wilkinson 2011-05-19 18:19:29 +01:00 committed by Derrick Brashear
parent e7f457469f
commit a180b0c5d8

View File

@ -2379,7 +2379,7 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1,
base = (ctx.hostaddress[WillChange[i]] >> 16) & 0xff;
index = ctx.hostaddress[WillChange[i]] & 0x0000ffff;
tex = &ctx.ex_addr[fbase][index];
tex = &ctx.ex_addr[base][index];
if (++m == 1)
VLog(0,