James, Can you please take a look at this patch.. > -----Original Message----- > From: Krishnasamy, Somasundaram > Sent: Monday, February 28, 2011 5:13 PM > To: linux-scsi@xxxxxxxxxxxxxxx > Cc: Moger, Babu > Subject: [PATCH] ses: Avoid kernel panic when lun 0 is not mapped > > During device discovery, scsi mid layer sends INQUIRY command to LUN 0. > If the LUN 0 is not mapped to host, it creates a temporary scsi_device > with LUN id 0 and sends REPORT_LUNS command to it. After the REPORT_LUNS > succeeds, it walks through the LUN table and adds each LUN found to > sysfs. At the end of REPORT_LUNS lun table scan, it will delete the > temporary scsi_device of LUN 0. > > When scsi devices are added to sysfs, it calls add_dev function of all > the registered class interfaces. If ses driver has been registered, > ses_intf_add() of ses module will be called. This function calls > scsi_device_enclosure() to check the inquiry data for EncServ bit. Since > inquiry was not allocated for temporary LUN 0 scsi_device, it will cause > NULL pointer exception. > > To fix the problem, sdev->inquiry is checked for NULL before reading it. > > Signed-off-by: Somasundaram Krishnasamy > <Somasundaram.Krishnasamy@xxxxxxx> > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > --- > --- linux-2.6.38-rc6/include/scsi/scsi_device.h.orig 2011-02-28 > 16:12:51.000000000 -0600 > +++ linux-2.6.38-rc6/include/scsi/scsi_device.h 2011-02-28 > 16:16:02.000000000 -0600 > @@ -461,7 +461,7 @@ static inline int scsi_device_qas(struct > } > static inline int scsi_device_enclosure(struct scsi_device *sdev) > { > - return sdev->inquiry[6] & (1<<6); > + return sdev->inquiry ? (sdev->inquiry[6] & (1<<6)) : 1; > } > > static inline int scsi_device_protection(struct scsi_device *sdev) > -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html