From d1514e6fbfe4e90d3d43f6238b3a6a4af2c579ac Mon Sep 17 00:00:00 2001 From: Joe Eykholt Date: Mon, 15 Jun 2009 23:22:14 -0700 Subject: [PATCH] --- yaml --- r: 154022 b: refs/heads/master c: 30c9afa6cc477f6f21f8a0b36f3b81080941a0c9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/hosts.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9adee23b22f2..2093c157b0fa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 111986593561fc4c94a1fba3f3cd84476fb40b22 +refs/heads/master: 30c9afa6cc477f6f21f8a0b36f3b81080941a0c9 diff --git a/trunk/drivers/scsi/hosts.c b/trunk/drivers/scsi/hosts.c index 89d41a424b33..5fd2da494d08 100644 --- a/trunk/drivers/scsi/hosts.c +++ b/trunk/drivers/scsi/hosts.c @@ -40,7 +40,7 @@ #include "scsi_logging.h" -static int scsi_host_next_hn; /* host_no for next new host */ +static atomic_t scsi_host_next_hn; /* host_no for next new host */ static void scsi_host_cls_release(struct device *dev) @@ -333,7 +333,11 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize) mutex_init(&shost->scan_mutex); - shost->host_no = scsi_host_next_hn++; /* XXX(hch): still racy */ + /* + * subtract one because we increment first then return, but we need to + * know what the next host number was before increment + */ + shost->host_no = atomic_inc_return(&scsi_host_next_hn) - 1; shost->dma_channel = 0xff; /* These three are default values which can be overridden */