On Wed, May 07, 2014 at 09:22:58AM +0200, David Herrmann wrote: > ah->caldata may be NULL if no channel is selected. Check for that before > accessing it. > > Signed-off-by: David Herrmann <dh.herrmann@xxxxxxxxx> > --- > Hi > > This is _definitely_ only a workaround, given that no-one guarantees ah->caldata > is freed while we run in hw_per_calibration(). However, this patch fixes serious > kernel panics with wifi-P2P on my machine. > > I'm not sure why ah->caldata can be NULL, but it definitely is. I think the > correct fix would be to synchronously stop any running hw-calibration before > setting ah->caldata to NULL. I don't know whether/where that is done, so I wrote > this small workaround. > > Thanks > David Is there any hope for getting a more complete fix from the ath9k guys in short order? John > > drivers/net/wireless/ath/ath9k/ar9002_calib.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c > index cdc7400..4667ab9 100644 > --- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c > +++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c > @@ -99,14 +99,16 @@ static bool ar9002_hw_per_calibration(struct ath_hw *ah, > } > > currCal->calData->calPostProc(ah, numChains); > - caldata->CalValid |= currCal->calData->calType; > + if (caldata) > + caldata->CalValid |= currCal->calData->calType; > + > currCal->calState = CAL_DONE; > iscaldone = true; > } else { > ar9002_hw_setup_calibration(ah, currCal); > } > } > - } else if (!(caldata->CalValid & currCal->calData->calType)) { > + } else if (caldata && !(caldata->CalValid & currCal->calData->calType)) { > ath9k_hw_reset_calibration(ah, currCal); > } > > -- > 1.9.2 > > -- John W. Linville Someday the world will need a hero, and you linville@xxxxxxxxxxxxx might be all we have. Be ready. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html