On Mon, Nov 16, 2020 at 12:53:14PM +0100, Stefan Sperling wrote:
> On Mon, Nov 16, 2020 at 10:59:45AM +0000, Mikolaj Kucharski wrote:
> > It happened again. This time on current. I was on Android phone using
> > Signal and other laptop on urwn(4) was fetching newest packages snapshot.
> > 
> > In this email thread it's different physical hardware, but I think
> > it's same Wi-Fi card like on the other PC Engines board.
> > 
> > This email thread which I'm continuing here is:
> > 
> >     https://marc.info/?t=160028899800004&r=1&w=2
> > 
> > There was also previous one from May 2020:
> > 
> >     https://marc.info/?t=159047855800002&r=1&w=2
> > 
> > OpenBSD 6.8-current (GENERIC.MP) #180: Sun Nov 15 18:14:53 MST 2020
> >     [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> > 
> 
> Until a way to trigger this deliberately is found, or we get lucky and someone
> with time and motivation finds the race by auditing code, there is nothing 
> that
> could be done here.

Makes sense, Stefan. I don't know how to trigger this on demand,
but will try to run custom kernel, with some additional debugging
statements. I will report any panics with new information here.

I have no idea, but looking how usual path is executed if-statement from
line 1449 is evaluated to true on my machine during usual operation, so
I imagine when kernel panic happens, probably else branch is executed.

file dev/ic/ar5008.c, function ar5008_tx():
1449          if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) {
1450                  k = ieee80211_get_txkey(ic, wh, ni);
1451                  if (k->k_cipher == IEEE80211_CIPHER_CCMP) {
1452                          u_int hdrlen = ieee80211_get_hdrlen(wh);
1453                          if (ar5008_ccmp_encap(m, hdrlen, k) != 0)
1454                                  return (ENOBUFS);
1455                  } else {
1456                          if ((m = ieee80211_encrypt(ic, m, k)) == NULL)
1457                                  return (ENOBUFS);
1458                          k = NULL; /* skip hardware crypto further below */
1459                  }
1460                  wh = mtod(m, struct ieee80211_frame *);
1461          }

Anyway, more panics are needed..

-- 
Regards,
 Mikolaj

Reply via email to