diff options
author | 2021-04-27 18:59:15 -0500 | |
---|---|---|
committer | 2021-05-15 18:01:34 -0400 | |
commit | 05f7f1b9ee8273eab805da3d5e2d064872aa75b1 (patch) | |
tree | 10e035dceb00bbbf649dfa00204df4619503feaf /drivers/target/target_core_user.c | |
parent | scsi: 3w-9xxx: Reduce scope of structure packing (diff) | |
download | wireguard-linux-05f7f1b9ee8273eab805da3d5e2d064872aa75b1.tar.xz wireguard-linux-05f7f1b9ee8273eab805da3d5e2d064872aa75b1.zip |
scsi: 3w-9xxx: Fix endianness issues in command packets
The controller expects all data it sends/receives to be little-endian.
Therefore, the packet struct definitions should use the __le16/32/64
types. Once those are correct, sparse reports several issues with the
driver code, which are fixed here as well.
The main issue observed was at the call to scsi_set_resid(), where the
byteswapped parameter would eventually trigger the alignment check at
drivers/scsi/sd.c:2009. At that point, the kernel would continuously
complain about an "Unaligned partial completion", and no further I/O could
occur.
This gets the controller working on big endian powerpc64.
Link: https://lore.kernel.org/r/20210427235915.39211-4-samuel@sholland.org
Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/target/target_core_user.c')
0 files changed, 0 insertions, 0 deletions