[stgt] [PATCH] tgtd: fix internal error of __inaccount_bind()
Ryusuke Konishi
konishi.ryusuke at lab.ntt.co.jp
Mon Feb 24 07:43:26 CET 2014
When trying to bind 32 accounts to the same target, tgtadm outputs
"unknown error" and exits returing status code 22 (EINVAL).
This is because __inaccount_bind() function of tgtd does not increment
target->account.nr_inaccount when it doubles maximum number of
accounts for the target, and therefore it tries to allocate an aid
slot on target->account.in_aids[] array even though no free aid slot
is available there.
This fixes the bug.
Reported-by: Satoshi Yoshida <yoshida.satoshi at po.ntts.co.jp>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke at lab.ntt.co.jp>
---
usr/target.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/target.c b/usr/target.c
index f4c5b4e..b6f324c 100644
--- a/usr/target.c
+++ b/usr/target.c
@@ -1581,7 +1581,6 @@ static tgtadm_err __inaccount_bind(struct target *target, int aid)
}
target->account.in_aids[i] = aid;
- target->account.nr_inaccount++;
} else {
int new_max = target->account.max_inaccount << 1;
int *buf;
@@ -1597,6 +1596,7 @@ static tgtadm_err __inaccount_bind(struct target *target, int aid)
target->account.in_aids[target->account.max_inaccount] = aid;
target->account.max_inaccount = new_max;
}
+ target->account.nr_inaccount++;
return TGTADM_SUCCESS;
}
--
1.7.9.3
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list