scsi: ses: Don't attach if enclosure has no components
authorJames Bottomley <jejb@linux.ibm.com>
Sat, 28 Nov 2020 23:27:21 +0000 (15:27 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 21 Feb 2023 22:44:06 +0000 (17:44 -0500)
An enclosure with no components can't usefully be operated by the driver
(since effectively it has nothing to manage), so report the problem and
don't attach. Not attaching also fixes an oops which could occur if the
driver tries to manage a zero component enclosure.

[mkp: Switched to KERN_WARNING since this scenario is common]

Link: https://lore.kernel.org/r/c5deac044ac409e32d9ad9968ce0dcbc996bfc7a.camel@linux.ibm.com
Cc: stable@vger.kernel.org
Reported-by: Ding Hui <dinghui@sangfor.com.cn>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ses.c

index 9d4fb09acc1ecd083e0f401c81a4d32006133c5a..b11a9162e73aaeed994667a3ba04f2fa59cae240 100644 (file)
@@ -733,6 +733,12 @@ static int ses_intf_add(struct device *cdev,
                    type_ptr[0] == ENCLOSURE_COMPONENT_ARRAY_DEVICE)
                        components += type_ptr[1];
        }
+
+       if (components == 0) {
+               sdev_printk(KERN_WARNING, sdev, "enclosure has no enumerated components\n");
+               goto err_free;
+       }
+
        ses_dev->page1 = buf;
        ses_dev->page1_len = len;
        buf = NULL;