summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Boot <bootc@bootc.net>2012-02-15 14:59:09 (GMT)
committerStefan Richter <stefanr@s5r6.in-berlin.de>2012-02-22 21:36:02 (GMT)
commit74044563a2318f2c56fa53af64f7800f49fb479d (patch)
treeb07889e33612d12c9584518236b2bf2ff0215741
parent8ff6a75744dfc0ea19a03c0ac5a438ef8d825342 (diff)
downloadlinux-74044563a2318f2c56fa53af64f7800f49fb479d.tar.xz
firewire: sbp2: Ignore SBP-2 targets on the local node
The firewire-sbp2 module tries to login to an SBP-2/3 target even when it is running on the local node, which fails because of the inability to fetch data from DMA mapped regions using firewire transactions on the local node. It also doesn't make much sense to have the initiator and target on the same node, so this patch prevents this behaviour. Signed-off-by: Chris Boot <bootc@bootc.net> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (changed the comment)
-rw-r--r--drivers/firewire/sbp2.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
index 4865d64..0c92ed8 100644
--- a/drivers/firewire/sbp2.c
+++ b/drivers/firewire/sbp2.c
@@ -1141,6 +1141,10 @@ static int sbp2_probe(struct device *dev)
struct Scsi_Host *shost;
u32 model, firmware_revision;
+ /* cannot (or should not) handle targets on the local node */
+ if (device->is_local)
+ return -ENODEV;
+
if (dma_get_max_seg_size(device->card->device) > SBP2_MAX_SEG_SIZE)
BUG_ON(dma_set_max_seg_size(device->card->device,
SBP2_MAX_SEG_SIZE));