kernel-ark/drivers/scsi
James Bottomley 53a983c4f8 [SCSI] mvsas: Fix kernel panic on tile due to unaligned data access
slot->response is a 64 bit quantity (and accessed as such), but its alignment
is only 32 bits.  This doesn't cause a problem on x86, but apparently causes a
kernel panic on Tile:

Stack dump complete Kernel panic - not syncing:
 Kernel unalign fault running the idle task!
 Starting stack dump of tid 0, pid 0 (swapper) on cpu 1 at cycle 341586172541
   frame 0: 0xfffffff700140ee0 dump_stack+0x0/0x20 (sp 0xfffffe43ffedf420)
   frame 1: 0xfffffff700283270 panic+0x150/0x3a0 (sp 0xfffffe43ffedf420)
   frame 2: 0xfffffff70012bff8 jit_bundle_gen+0xfd8/0x27e0 (sp 0xfffffe43ffedf4c8)
   frame 3: 0xfffffff7003b5b68 do_unaligned+0xc0/0x5a0 (sp 0xfffffe43ffedf710)
   frame 4: 0xfffffff70044ca78 handle_interrupt+0x270/0x278 (sp 0xfffffe43ffedf840)
   <interrupt 17 while in kernel mode>
   frame 5: 0xfffffff7002ac370 mvs_slot_complete+0x5f0/0x12a0 (sp 0xfffffe43ffedfa90)
   frame 6: 0xfffffff7002abec0 mvs_slot_complete+0x140/0x12a0 (sp 0xfffffe43ffedfa90)
   frame 7: 0xfffffff7005cc840 mvs_int_rx+0x140/0x2a0 (sp 0xfffffe43ffedfb00)
   frame 8: 0xfffffff7005bbaf0 mvs_94xx_isr+0xd8/0x2b8 (sp 0xfffffe43ffedfb68)
   frame 9: 0xfffffff700658ba0 mvs_tasklet+0x128/0x1f8 (sp 0xfffffe43ffedfba8)
   frame 10: 0xfffffff7003e8230 tasklet_action+0x178/0x2c8 (sp 0xfffffe43ffedfbe0)
   frame 11: 0xfffffff700103850 __do_softirq+0x210/0x398 (sp 0xfffffe43ffedfc40)
   frame 12: 0xfffffff700180308 do_softirq+0xc8/0x140 (sp 0xfffffe43ffedfcd8)
   frame 13: 0xfffffff7000bd7f0 irq_exit+0xb0/0x158 (sp 0xfffffe43ffedfcf0)
   frame 14: 0xfffffff70013fa58 tile_dev_intr+0x1d8/0x2f0 (sp 0xfffffe43ffedfd00)
   frame 15: 0xfffffff70044ca78 handle_interrupt+0x270/0x278 (sp 0xfffffe43ffedfd40)
   <interrupt 30 while in kernel mode>
   frame 16: 0xfffffff700143e68 _cpu_idle_nap+0x0/0x18 (sp 0xfffffe43ffedffb0)
   frame 17: 0xfffffff700482480 cpu_idle+0x310/0x428 (sp 0xfffffe43ffedffb0)

Since the check is just for non-zero, split it to be two 32 bit accesses
(preserving speed in the fast path) and do a get_unaligned() in the slow path.

This is a modification of a wholly get_unaligned patch submitted by Paul Guo

Reported-by: Paul Guo <ggang@tilera.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-07-23 15:23:08 -07:00
..
aacraid SCSI misc on 20130702 2013-07-04 12:30:30 -07:00
aic7xxx aic7xxx: switch to ->show_info() 2013-04-09 14:13:26 -04:00
aic7xxx_old scsi: Spelling hsot -> host 2013-05-28 12:02:12 +02:00
aic94xx [SCSI] libsas: implement > 16 byte CDB support 2013-06-04 11:15:59 -07:00
arcmsr
arm acornscsi: switch to ->show_info() 2013-04-09 14:13:27 -04:00
be2iscsi drivers: avoid format strings in names passed to alloc_workqueue() 2013-07-03 16:07:41 -07:00
bfa SCSI misc on 20130702 2013-07-04 12:30:30 -07:00
bnx2fc [SCSI] bnx2fc: Bumped version to 1.0.14 2013-05-02 07:32:26 -07:00
bnx2i treewide: Fix typo in printk and comments 2013-04-24 16:43:00 +02:00
csiostor [SCSI] csiostor: Retain default adapter configuration in absence of config file. 2013-06-04 11:16:28 -07:00
cxgbi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
device_handler [SCSI] scsi_dh_alua: Add module parameter to allow failover to non preferred path without STPG 2013-04-11 16:00:31 -07:00
dpt
fcoe SCSI for-linus on 20130713 2013-07-13 17:41:21 -07:00
fnic SCSI misc on 20130702 2013-07-04 12:30:30 -07:00
ibmvscsi [SCSI] ibmvfc: Driver version 1.0.11 2013-05-02 11:58:18 -07:00
isci [SCSI] isci: Fix a race condition in the SSP task management path 2013-07-23 07:16:57 -07:00
libfc A short series of fixes to libfc, libfcoe and fcoe. 2013-07-13 08:22:56 +04:00
libsas [SCSI] libsas: implement > 16 byte CDB support 2013-06-04 11:15:59 -07:00
lpfc SCSI misc on 20130702 2013-07-04 12:30:30 -07:00
megaraid [SCSI] megaraid_sas: fix a bug for 64 bit arches 2013-07-09 12:14:06 +01:00
mpt2sas [SCSI] mpt2sas: fix for unused variable 'event_data' warning 2013-06-24 12:55:34 -07:00
mpt3sas [SCSI] mpt3sas: Bump driver version to v02.100.00.00 2013-07-09 09:01:47 +01:00
mvsas [SCSI] mvsas: Fix kernel panic on tile due to unaligned data access 2013-07-23 15:23:08 -07:00
osd block: do not pass disk names as format strings 2013-07-03 16:07:25 -07:00
pcmcia nsp_cs: switch to ->show_info() 2013-04-09 14:13:21 -04:00
pm8001 [SCSI] pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM) 2013-07-05 22:42:43 +01:00
qla2xxx [SCSI] qla2xxx: Properly set the tagging for commands. 2013-07-23 07:23:47 -07:00
qla4xxx drivers: avoid format strings in names passed to alloc_workqueue() 2013-07-03 16:07:41 -07:00
sym53c8xx_2 sym53c8xx_2: switch to ->show_info() 2013-04-09 14:13:15 -04:00
ufs [SCSI] ufshcd-pltfrm: remove unnecessary dma_set_coherent_mask() call 2013-06-28 13:17:35 -07:00
.gitignore
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c [SCSI] 3w-xxxx: Create sense buffer for unsupported commands 2013-06-24 16:32:22 -07:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
a2091.h
a3000.c [SCSI] a3000: use module_platform_driver_probe() 2013-06-24 19:44:18 +02:00
a3000.h
a4000t.c [SCSI] a4000t: use module_platform_driver_probe() 2013-06-24 19:44:18 +02:00
advansys.c advansys: fix buggered formats - unsigned long != u32 on 64bit 2013-04-09 14:13:22 -04:00
aha152x.c aha152x: switch to ->show_info() 2013-04-09 14:13:22 -04:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c aha1740: switch to ->show_info() 2013-04-09 14:13:23 -04:00
aha1740.h
aic7xxx_old.c aix7xxx_old: switch to ->show_info() 2013-04-09 14:13:28 -04:00
atari_NCR5380.c atari_scsi: switch to ->show_info() 2013-04-09 14:13:29 -04:00
atari_scsi.c atari_scsi: switch to ->show_info() 2013-04-09 14:13:29 -04:00
atari_scsi.h atari_scsi: switch to ->show_info() 2013-04-09 14:13:29 -04:00
atp870u.c atp870u: switch to ->show_info() 2013-04-09 14:13:24 -04:00
atp870u.h
BusLogic.c [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
BusLogic.h [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
bvme6000_scsi.c
ch.c
constants.c [SCSI] scsi constants: command, sense key + additional sense strings 2013-07-09 22:52:29 +01:00
dc395x.c dc395x: switch to ->show_info() 2013-04-09 14:13:24 -04:00
dc395x.h
dmx3191d.c
dpt_i2o.c dpt_i2o: switch to ->show_info() 2013-04-09 14:13:24 -04:00
dpti.h
dtc.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
dtc.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
eata_generic.h
eata_pio.c eata_pio: switch to ->show_info() 2013-04-09 14:13:23 -04:00
eata_pio.h
eata.c
esp_scsi.c
esp_scsi.h
fdomain.c
fdomain.h
FlashPoint.c [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
g_NCR5380_mmio.c
g_NCR5380.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth_proc.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth.c gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gvp11.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
gvp11.h
hosts.c
hpsa_cmd.h
hpsa.c
hpsa.h
hptiop.c
hptiop.h
imm.c imm: switch to ->show_info() 2013-04-09 14:13:16 -04:00
imm.h
in2000.c in2000: switch to ->show_info() 2013-04-09 14:13:25 -04:00
in2000.h
initio.c
initio.h
ipr.c Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2013-07-03 19:49:46 -07:00
ipr.h [SCSI] ipr: Avoid target_destroy accessing memory after it was freed 2013-06-04 11:16:22 -07:00
ips.c ips: fix format bugs exposed by previous commit 2013-04-09 14:13:27 -04:00
ips.h ips: switch to ->show_info() 2013-04-09 14:13:27 -04:00
iscsi_boot_sysfs.c
iscsi_tcp.c [SCSI] iscsi_tcp: support PF_MEMALLOC/__GFP_MEMALLOC 2013-04-11 16:55:04 -07:00
iscsi_tcp.h
jazz_esp.c
Kconfig [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
lasi700.c
libiscsi_tcp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
libiscsi.c [SCSI] libiscsi: Added new boot entries in the session sysfs 2013-06-26 18:04:11 -07:00
libsrp.c
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
mac_scsi.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
Makefile
megaraid.c PCI: Convert alloc_pci_dev(void) to pci_alloc_dev(bus) 2013-06-05 13:49:36 -06:00
megaraid.h megaraid: Don't use create_proc_read_entry() 2013-04-29 15:41:57 -04:00
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
mvme147.h
mvumi.c [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
mvumi.h [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
ncr53c8xx.c
ncr53c8xx.h
NCR53c406a.c
NCR5380.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
NCR5380.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] nsp32: use mdelay instead of large udelay constants 2013-06-19 17:53:35 +02:00
nsp32.h
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
pas16.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
pmcraid.c treewide: Fix typo in printk 2013-06-18 13:48:45 +02:00
pmcraid.h
ppa.c ppa: switch to ->show_info() 2013-04-09 14:13:17 -04:00
ppa.h
ps3rom.c
qla1280.c
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c SCSI for-linus on 20130713 2013-07-13 17:41:21 -07:00
scsi_devinfo.c [SCSI] Workaround for disks that report bad optimal transfer length 2013-06-24 13:00:10 -07:00
scsi_error.c SCSI misc on 20130702 2013-07-04 12:30:30 -07:00
scsi_ioctl.c
scsi_lib_dma.c
scsi_lib.c [SCSI] enable destruction of blocked devices which fail LUN scanning 2013-07-09 12:14:09 +01:00
scsi_logging.h
scsi_module.c
scsi_netlink.c scsi: replace obsolete NLMSG_* with type safe nlmsg_* 2013-03-28 14:27:24 -04:00
scsi_pm.c PM / Runtime: Rework the "runtime idle" helper routine 2013-06-03 21:49:52 +02:00
scsi_priv.h
scsi_proc.c fix buffer leak after "scsi: saner replacements for ->proc_info()" 2013-05-31 15:16:51 -04:00
scsi_sas_internal.h
scsi_scan.c [SCSI] Workaround for disks that report bad optimal transfer length 2013-06-24 13:00:10 -07:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] Allow error handling timeout to be specified 2013-06-04 11:16:24 -07:00
scsi_tgt_if.c
scsi_tgt_lib.c
scsi_tgt_priv.h
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c drivers: avoid format strings in names passed to alloc_workqueue() 2013-07-03 16:07:41 -07:00
scsi_transport_iscsi.c [SCSI] libiscsi: Added new boot entries in the session sysfs 2013-06-26 18:04:11 -07:00
scsi_transport_sas.c
scsi_transport_spi.c
scsi_transport_srp_internal.h
scsi_transport_srp.c
scsi_typedefs.h
scsi.c [SCSI] sd: Update WRITE SAME heuristics 2013-06-26 17:56:18 -07:00
scsi.h
scsicam.c
sd_dif.c [SCSI] sd_dif: problem with verify of type 1 protection information (PI) 2013-05-02 15:37:03 -07:00
sd.c [SCSI] sd: fix crash when UA received on DIF enabled device 2013-07-23 07:41:53 -07:00
sd.h [SCSI] sd: Update WRITE SAME heuristics 2013-06-26 17:56:18 -07:00
ses.c
sg.c aio: don't include aio.h in sched.h 2013-05-07 20:16:25 -07:00
sgiwd93.c
sim710.c
sni_53c710.c
sr_ioctl.c
sr_vendor.c
sr.c block_device_operations->release() should return void 2013-05-07 02:16:21 -04:00
sr.h
st_options.h
st.c [SCSI] st: Take additional queue ref in st_probe 2013-04-06 11:14:20 +01:00
st.h
stex.c
storvsc_drv.c [SCSI] storvsc: Increase the value of STORVSC_MAX_IO_REQUESTS 2013-07-08 15:23:15 +01:00
sun3_NCR5380.c sun3_scsi: add ->show_info() 2013-05-04 14:50:16 -04:00
sun3_scsi_vme.c
sun3_scsi.c sun3_scsi: add ->show_info() 2013-05-04 14:50:16 -04:00
sun3_scsi.h sun3_scsi: add ->show_info() 2013-05-04 14:50:16 -04:00
sun3x_esp.c
sun_esp.c
sym53c416.c
sym53c416.h
t128.c NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
t128.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
tmscsim.c
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
virtio_scsi.c virtio-scsi: reset virtqueue affinity when doing cpu hotplug 2013-04-08 23:06:56 +09:30
vmw_pvscsi.c
vmw_pvscsi.h
wd33c93.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
wd33c93.h switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
wd7000.c wd7000: switch to ->show_info() 2013-04-09 14:13:15 -04:00
zalon.c
zorro7xx.c