Add proper check for running out of bitmap slot and disallow exceeding
the max adapters limit.

Signed-off-by: Akinobu Mita <akinobu.m...@gmail.com>
Cc: Anil Ravindranath <anil_ravindran...@pmc-sierra.com>
Cc: "James E.J. Bottomley" <jbottom...@parallels.com>
Cc: linux-scsi@vger.kernel.org
---
 drivers/scsi/pmcraid.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index 583ec82..e3b68d9 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -5372,8 +5372,10 @@ static unsigned short pmcraid_get_minor(void)
 {
        int minor;
 
-       minor = find_first_zero_bit(pmcraid_minor, sizeof(pmcraid_minor));
-       __set_bit(minor, pmcraid_minor);
+       minor = find_first_zero_bit(pmcraid_minor, PMCRAID_MAX_ADAPTERS);
+       if (minor < PMCRAID_MAX_ADAPTERS)
+               __set_bit(minor, pmcraid_minor);
+
        return minor;
 }
 
@@ -5399,6 +5401,9 @@ static int pmcraid_setup_chrdev(struct pmcraid_instance 
*pinstance)
        int error;
 
        minor = pmcraid_get_minor();
+       if (minor >= PMCRAID_MAX_ADAPTERS)
+               return -EBUSY;
+
        cdev_init(&pinstance->cdev, &pmcraid_fops);
        pinstance->cdev.owner = THIS_MODULE;
 
-- 
1.8.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to