Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f632d57 authored by Andrey Yurovsky's avatar Andrey Yurovsky Committed by John W. Linville
Browse files

libertas: don't use dynamic-sized array



sparse complains about a bad constant expression due to the use of a
dynamic-sized array in get_common_rates().  Allocate and free the array
instead.

Signed-off-by: default avatarAndrey Yurovsky <andrey@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent b23da49e
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -45,9 +45,14 @@ static int get_common_rates(struct lbs_private *priv,
	u8 *card_rates = lbs_bg_rates;
	size_t num_card_rates = sizeof(lbs_bg_rates);
	int ret = 0, i, j;
	u8 tmp[30];
	u8 *tmp;
	size_t tmp_size = 0;

	tmp = kzalloc((ARRAY_SIZE(lbs_bg_rates) - 1) * (*rates_size - 1),
			GFP_KERNEL);
	if (!tmp)
		return -1;

	/* For each rate in card_rates that exists in rate1, copy to tmp */
	for (i = 0; card_rates[i] && (i < num_card_rates); i++) {
		for (j = 0; rates[j] && (j < *rates_size); j++) {
@@ -77,6 +82,7 @@ static int get_common_rates(struct lbs_private *priv,
	memset(rates, 0, *rates_size);
	*rates_size = min_t(int, tmp_size, *rates_size);
	memcpy(rates, tmp, *rates_size);
	kfree(tmp);
	return ret;
}