summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorJoe Eykholt <jeykholt@cisco.com>2009-08-25 23:02:54 +0200
committerJames Bottomley <James.Bottomley@suse.de>2009-09-10 19:07:56 +0200
commit935d0fce44b906268b8a29de4e72ebb57a3a06d8 (patch)
tree359f91d64556d06964b418b77b2a25f4f89c50d1 /drivers/scsi
parent[SCSI] libfc: clean up point-to-point discovery code. (diff)
downloadlinux-935d0fce44b906268b8a29de4e72ebb57a3a06d8.tar.xz
linux-935d0fce44b906268b8a29de4e72ebb57a3a06d8.zip
[SCSI] libfc: don't do discovery before callback is set
It's possible to "restart" discovery before it was started if an RSCN is received early enough. We were jumping to 0 due to the disc_callback function pointer not getting set. Don't restart discovery if disc_callback is NULL. Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/libfc/fc_disc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
index 428421842f3a..1a699f484c85 100644
--- a/drivers/scsi/libfc/fc_disc.c
+++ b/drivers/scsi/libfc/fc_disc.c
@@ -219,6 +219,9 @@ static void fc_disc_recv_req(struct fc_seq *sp, struct fc_frame *fp,
*/
static void fc_disc_restart(struct fc_disc *disc)
{
+ if (!disc->disc_callback)
+ return;
+
FC_DISC_DBG(disc, "Restarting discovery\n");
disc->requested = 1;