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

Commit 73810b77 authored by Johannes Berg's avatar Johannes Berg
Browse files

cfg80211: use atomic_t for wiphy counter



There's no need to lock, we can just use an atomic_t.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 9f419f38
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -289,7 +289,7 @@ static void cfg80211_event_work(struct work_struct *work)

struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)
{
	static int wiphy_counter;
	static atomic_t wiphy_counter = ATOMIC_INIT(0);

	struct cfg80211_registered_device *rdev;
	int alloc_size;
@@ -311,20 +311,15 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)

	rdev->ops = ops;

	mutex_lock(&cfg80211_mutex);

	rdev->wiphy_idx = wiphy_counter++;
	rdev->wiphy_idx = atomic_inc_return(&wiphy_counter);

	if (unlikely(rdev->wiphy_idx < 0)) {
		wiphy_counter--;
		mutex_unlock(&cfg80211_mutex);
		/* ugh, wrapped! */
		atomic_dec(&wiphy_counter);
		kfree(rdev);
		return NULL;
	}

	mutex_unlock(&cfg80211_mutex);

	/* give it a proper name */
	dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);