[bug report] wifi: ath11k: fix peer addition/deletion error on sta band migration
Dan Carpenter
error27 at gmail.com
Thu Feb 9 01:35:20 PST 2023
Hello Christian Marangi,
The patch d673cb6fe6c0: "wifi: ath11k: fix peer addition/deletion
error on sta band migration" from Sep 22, 2022, leads to the
following Smatch static checker warning:
drivers/net/wireless/ath/ath11k/peer.c:396 ath11k_peer_create()
warn: sleeping in atomic context
drivers/net/wireless/ath/ath11k/peer.c
370 int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif,
371 struct ieee80211_sta *sta, struct peer_create_params *param)
372 {
373 struct ath11k_peer *peer;
374 struct ath11k_sta *arsta;
375 int ret, fbret;
376
377 lockdep_assert_held(&ar->conf_mutex);
378
379 if (ar->num_peers > (ar->max_num_peers - 1)) {
380 ath11k_warn(ar->ab,
381 "failed to create peer due to insufficient peer entry resource in firmware\n");
382 return -ENOBUFS;
383 }
384
385 spin_lock_bh(&ar->ab->base_lock);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Holding a spin lock.
386 peer = ath11k_peer_find_by_addr(ar->ab, param->peer_addr);
387 if (peer) {
388 if (peer->vdev_id == param->vdev_id) {
389 spin_unlock_bh(&ar->ab->base_lock);
390 return -EINVAL;
391 }
392
393 /* Assume sta is transitioning to another band.
394 * Remove here the peer from rhash.
395 */
--> 396 mutex_lock(&ar->ab->tbl_mtx_lock);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
So we can't take a mutex.
397 ath11k_peer_rhash_delete(ar->ab, peer);
398 mutex_unlock(&ar->ab->tbl_mtx_lock);
399 }
400 spin_unlock_bh(&ar->ab->base_lock);
401
402 ret = ath11k_wmi_send_peer_create_cmd(ar, param);
regards,
dan carpenter
More information about the ath11k
mailing list