On Fri, May 07, 2021 at 10:02:56PM +0000, Mikolaj Kucharski wrote:
> On Tue, Apr 27, 2021 at 11:32:49PM +0200, Stefan Sperling wrote:
> > On Tue, Apr 27, 2021 at 06:36:32PM +0000, Mikolaj Kucharski wrote:
> > > I got it again, but had official snapshot, so I don't have more info
> > > than I had in the past, but I would like to share it anyway..
> >
> > > ddb{0}> show panic
> > > ieee80211_encrypt: key unset for sw crypto: 0
> >
> > It would be nice to have more information about the bad key.
> > Could you run with this?
> >
> > diff 87962d75d1c1a416b89e927cd4ab8e3327a47509 /usr/src
> > blob - 037aca21138df15a4b0b8ec2a96afd8d67c5e3cc
> > file + sys/net80211/ieee80211_crypto.c
> > --- sys/net80211/ieee80211_crypto.c
> > +++ sys/net80211/ieee80211_crypto.c
> > @@ -257,8 +257,10 @@ struct mbuf *
> > ieee80211_encrypt(struct ieee80211com *ic, struct mbuf *m0,
> > struct ieee80211_key *k)
> > {
> > - if ((k->k_flags & IEEE80211_KEY_SWCRYPTO) == 0)
> > - panic("%s: key unset for sw crypto: %d", __func__, k->k_id);
> > + if ((k->k_flags & IEEE80211_KEY_SWCRYPTO) == 0) {
> > + panic("%s: key unset for sw crypto: id=%d cipher=%d flags=0x%x",
> > + __func__, k->k_id, k->k_cipher, k->k_flags);
> > + }
> >
> > switch (k->k_cipher) {
> > case IEEE80211_CIPHER_WEP40:
>
> Finally managed to `got rebase` all my testing diffs with above
> included and build new kernel. Not deployed yet. Panic is very rare,
> looking at my logs it's between once per quarter and even once per
> half of a year. I'm not always in a position to quickly rebase my
> testing diffs and sometimes I just deploy official snapshot, because
> sysupgrade makes it so super easy.
>
> Do you think above could be committed to HEAD?
Yes, I will commit it.
> Wrong place, wong time.. but could `got rebase` return dedicated
> exit code for below situation?
>
> $ got rebase main
> got: refs/heads/main is already based on refs/heads/key-unset-printf-trigger
>
> At present it's exit code 1, but if that would be lets say 2, I could
> improve my automation script to rebase stack of my diffs and rebuild
> my custom kernel in more efficient manner. Probably without human
> intervention.
How about returning exit code 0 in this case? There's nothing to be done
so the command could "trivially" succeed.