ath10k: prevent using invalid ringbuffer indexes
authorMichal Kazior <michal.kazior@tieto.com>
Wed, 31 Jul 2013 08:55:11 +0000 (10:55 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 2 Aug 2013 06:37:28 +0000 (09:37 +0300)
commit432358ed1d18c19dbf89008325ff6ba662d0996e
tree4f68a8770547ed4380c49d8d9328f518fafe6c0c
parent2e1dea40512d7e99a7e91ac88a6f434a5d7c6fde
ath10k: prevent using invalid ringbuffer indexes

If the device is removed and hotplug fails
ioread32() will return 0xFFFFFFFF. In that case
reading ringbuffer during device bringup led to
out-of-bounds addressing of a ringbuffer array
that in turn led to a paging failure.

This could be reproduced by the following:
 * boot without acpi/prevent hotplug from working
 * insert and manually detect (pci rescan) the device
 * remove the device physically
 * load ath10k driver
 * kernel crashed

Ringbuffer index reading is now protected by using
an appropriate mask to prevent addressing an
invalid array index.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/ce.c