All of lore.kernel.org
 help / color / mirror / Atom feed
From: Elias Oltmanns <eo@nebensachen.de>
To: Bob Copeland <me@bobcopeland.com>
Cc: jirislaby@gmail.com, toralf.foerster@gmx.de,
	ath5k-devel@lists.ath5k.org, linux-wireless@vger.kernel.org,
	mickflemm@gmail.com
Subject: Re: [ath5k-devel] Oops with current kernel and ath5k
Date: Tue, 07 Oct 2008 12:44:58 +0200	[thread overview]
Message-ID: <873aj8vg45.fsf@denkblock.local> (raw)
In-Reply-To: <20081007013529.GA9691@hash.localnet> (Bob Copeland's message of "Mon, 6 Oct 2008 21:35:29 -0400")

Bob Copeland <me@bobcopeland.com> wrote:
[...]
> Subject: [PATCH] ath5k: correct hardware startup sequence in resume
>
> Based on a patch by Elias Oltmanns, we call ath5k_init in resume even
> if we didn't previously open the device.  Besides starting up the
> device unnecessarily, this also causes an oops on rmmod because
> mac80211 will not invoke ath5k_stop and softirqs are left running after
> the module has been unloaded.  Add a new state bit, ATH_STAT_STARTED,
> to indicate that we have been started up.
>
> Signed-off-by: Bob Copeland <me@bobcopeland.com>
> ---
>  drivers/net/wireless/ath5k/base.c |   28 ++++++++++++++++++++--------
>  drivers/net/wireless/ath5k/base.h |    3 ++-
>  2 files changed, 22 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
> index c151588..5388de8 100644
> --- a/drivers/net/wireless/ath5k/base.c
> +++ b/drivers/net/wireless/ath5k/base.c
[...]
> @@ -2248,7 +2257,7 @@ ath5k_stop_locked(struct ath5k_softc *sc)
>   * stop is preempted).
>   */
>  static int
> -ath5k_stop_hw(struct ath5k_softc *sc)
> +ath5k_stop_hw(struct ath5k_softc *sc, bool update_status)
                                              ^^^^^^^^^^^^^
That should be is_suspend for the sake of consistency.

>  {
>  	int ret;
>  
> @@ -2280,6 +2289,9 @@ ath5k_stop_hw(struct ath5k_softc *sc)
>  	}
>  	ath5k_txbuf_free(sc, sc->bbuf);
>  	mmiowb();
> +
> +	if (update_status)
> +		__clear_bit(ATH_STAT_STARTED, sc->status);

This cannot possibly be right. The condition has to be

	if (!is_suspend)

>  	mutex_unlock(&sc->lock);
>  
>  	del_timer_sync(&sc->calib_tim);
> @@ -2676,12 +2688,12 @@ ath5k_reset_wake(struct ath5k_softc *sc)
>  
>  static int ath5k_start(struct ieee80211_hw *hw)
>  {
> -	return ath5k_init(hw->priv);
> +	return ath5k_init(hw->priv, false);
>  }
>  
>  static void ath5k_stop(struct ieee80211_hw *hw)
>  {
> -	ath5k_stop_hw(hw->priv);
> +	ath5k_stop_hw(hw->priv, false);
>  }
>  
>  static int ath5k_add_interface(struct ieee80211_hw *hw,

Looking through the code, I'm wondering about the atomicity requirements
of sc->status. In my opinion, __set_bit() is not permissible in various
places (including your use case). But since this is a problem that has
been around before, I will send a separate patch once yours has been
merged.

Regards,

Elias

  reply	other threads:[~2008-10-07 10:45 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200808101401.03339.toralf.foerster@gmx.de>
     [not found] ` <b6c5339f0808101124x6f9359dct9ad828db1e6d1b2c@mail.gmail.com>
2008-10-01 18:55   ` Oops with current kernel and ath5k Toralf Förster
2008-10-01 21:10     ` Elias Oltmanns
2008-10-01 22:15       ` [ath5k-devel] " Bob Copeland
2008-10-01 22:34         ` Elias Oltmanns
2008-10-02  2:04           ` Bob Copeland
2008-10-02  7:53             ` Elias Oltmanns
2008-10-02  9:24               ` Johannes Berg
2008-10-02 12:52               ` Bob Copeland
2008-10-02 15:02                 ` Bob Copeland
2008-10-02 16:31                   ` Elias Oltmanns
2008-10-02 18:37                     ` Bob Copeland
2008-10-03 14:13                       ` Bob Copeland
2008-10-03 14:42                         ` Elias Oltmanns
2008-10-03 19:43                           ` Bob Copeland
2008-10-05 12:45                             ` Elias Oltmanns
2008-10-06 14:12                               ` Bob Copeland
2008-10-06 14:23                                 ` Johannes Berg
2008-10-06 14:36                                   ` Bob Copeland
2008-10-09 10:40                                     ` Johannes Berg
2008-10-07  1:35                               ` Bob Copeland
2008-10-07 10:44                                 ` Elias Oltmanns [this message]
2008-10-07 12:19                                   ` Bob Copeland
2008-10-07 12:57                                   ` Bob Copeland
2008-10-07 20:48                                     ` Elias Oltmanns
2008-10-07 13:06                                   ` Bob Copeland
2008-10-07 20:52                                     ` Elias Oltmanns
2008-10-09  2:15                                       ` Bob Copeland
2008-10-11 20:30                                         ` Elias Oltmanns
2008-10-02  8:17       ` Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=873aj8vg45.fsf@denkblock.local \
    --to=eo@nebensachen.de \
    --cc=ath5k-devel@lists.ath5k.org \
    --cc=jirislaby@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=me@bobcopeland.com \
    --cc=mickflemm@gmail.com \
    --cc=toralf.foerster@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.