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

Commit 66aafd9a authored by Larry Finger's avatar Larry Finger Committed by John W. Linville
Browse files

rtl8187: Fix locking of private data



In rtl8187_add_interface(), the mutex that protects the data in struct
rtl8187_priv does not include all references to that structure.

Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 1fac36ee
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -974,19 +974,21 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev,
{
	struct rtl8187_priv *priv = dev->priv;
	int i;
	int ret = -EOPNOTSUPP;

	mutex_lock(&priv->conf_mutex);
	if (priv->mode != NL80211_IFTYPE_MONITOR)
		return -EOPNOTSUPP;
		goto exit;

	switch (conf->type) {
	case NL80211_IFTYPE_STATION:
		priv->mode = conf->type;
		break;
	default:
		return -EOPNOTSUPP;
		goto exit;
	}

	mutex_lock(&priv->conf_mutex);
	ret = 0;
	priv->vif = conf->vif;

	rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
@@ -995,8 +997,9 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev,
				 ((u8 *)conf->mac_addr)[i]);
	rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);

exit:
	mutex_unlock(&priv->conf_mutex);
	return 0;
	return ret;
}

static void rtl8187_remove_interface(struct ieee80211_hw *dev,