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

Commit 030fe797 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville
Browse files

mwifiex: fix bug in mwifiex_save_curr_bcn()



Since timestamp in beacon buffer keeps changing all the time,
the memcmp check in mwifiex_save_curr_bcn() is redundant.
Remove that memcmp check and also avoid freeing and allocation
of buffer if required beacon buffer size is same as previous one.

Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a46b7b5c
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -2990,33 +2990,29 @@ mwifiex_save_curr_bcn(struct mwifiex_private *priv)
	struct mwifiex_bssdescriptor *curr_bss =
		&priv->curr_bss_params.bss_descriptor;

	/* save the beacon buffer if it is not saved or updated */
	if ((priv->curr_bcn_buf == NULL) ||
	    (priv->curr_bcn_size != curr_bss->beacon_buf_size) ||
	    (memcmp(priv->curr_bcn_buf, curr_bss->beacon_buf,
		    curr_bss->beacon_buf_size))) {

		kfree(priv->curr_bcn_buf);
		priv->curr_bcn_buf = NULL;
	if (!curr_bss->beacon_buf_size)
		return;

	/* allocate beacon buffer at 1st time; or if it's size has changed */
	if (!priv->curr_bcn_buf ||
			priv->curr_bcn_size != curr_bss->beacon_buf_size) {
		priv->curr_bcn_size = curr_bss->beacon_buf_size;
		if (!priv->curr_bcn_size)
			return;

		kfree(priv->curr_bcn_buf);
		priv->curr_bcn_buf = kzalloc(curr_bss->beacon_buf_size,
						GFP_KERNEL);
		if (!priv->curr_bcn_buf) {
			dev_err(priv->adapter->dev,
					"failed to alloc curr_bcn_buf\n");
		} else {
			return;
		}
	}

	memcpy(priv->curr_bcn_buf, curr_bss->beacon_buf,
		curr_bss->beacon_buf_size);
			dev_dbg(priv->adapter->dev,
				"info: current beacon saved %d\n",
	dev_dbg(priv->adapter->dev, "info: current beacon saved %d\n",
		priv->curr_bcn_size);
}
	}
}

/*
 * This function frees the current BSS descriptor beacon buffer.