Loading drivers/scsi/libata-scsi.c +25 −15 Original line number Diff line number Diff line Loading @@ -52,8 +52,12 @@ #define SECTOR_SIZE 512 typedef unsigned int (*ata_xlat_func_t)(struct ata_queued_cmd *qc, const u8 *scsicmd); static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); #define RW_RECOVERY_MPAGE 0x1 #define RW_RECOVERY_MPAGE_LEN 12 Loading Loading @@ -2308,6 +2312,23 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd) return 0; } static struct ata_device * ata_find_dev(struct ata_port *ap, int id) { if (likely(id < ATA_MAX_DEVICES)) return &ap->device[id]; return NULL; } static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev) { /* skip commands not addressed to targets we simulate */ if (unlikely(scsidev->channel || scsidev->lun)) return NULL; return ata_find_dev(ap, scsidev->id); } /** * ata_scsi_find_dev - lookup ata_device from scsi_cmnd * @ap: ATA port to which the device is attached Loading @@ -2324,23 +2345,12 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd) * RETURNS: * Associated ATA device, or %NULL if not found. */ static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev) { struct ata_device *dev; /* skip commands not addressed to targets we simulate */ if (likely(scsidev->id < ATA_MAX_DEVICES)) dev = &ap->device[scsidev->id]; else return NULL; if (unlikely((scsidev->channel != 0) || (scsidev->lun != 0))) return NULL; struct ata_device *dev = __ata_scsi_find_dev(ap, scsidev); if (unlikely(!ata_dev_enabled(dev))) if (unlikely(!dev || !ata_dev_enabled(dev))) return NULL; if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) { Loading Loading
drivers/scsi/libata-scsi.c +25 −15 Original line number Diff line number Diff line Loading @@ -52,8 +52,12 @@ #define SECTOR_SIZE 512 typedef unsigned int (*ata_xlat_func_t)(struct ata_queued_cmd *qc, const u8 *scsicmd); static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev); #define RW_RECOVERY_MPAGE 0x1 #define RW_RECOVERY_MPAGE_LEN 12 Loading Loading @@ -2308,6 +2312,23 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd) return 0; } static struct ata_device * ata_find_dev(struct ata_port *ap, int id) { if (likely(id < ATA_MAX_DEVICES)) return &ap->device[id]; return NULL; } static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev) { /* skip commands not addressed to targets we simulate */ if (unlikely(scsidev->channel || scsidev->lun)) return NULL; return ata_find_dev(ap, scsidev->id); } /** * ata_scsi_find_dev - lookup ata_device from scsi_cmnd * @ap: ATA port to which the device is attached Loading @@ -2324,23 +2345,12 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd) * RETURNS: * Associated ATA device, or %NULL if not found. */ static struct ata_device * ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev) { struct ata_device *dev; /* skip commands not addressed to targets we simulate */ if (likely(scsidev->id < ATA_MAX_DEVICES)) dev = &ap->device[scsidev->id]; else return NULL; if (unlikely((scsidev->channel != 0) || (scsidev->lun != 0))) return NULL; struct ata_device *dev = __ata_scsi_find_dev(ap, scsidev); if (unlikely(!ata_dev_enabled(dev))) if (unlikely(!dev || !ata_dev_enabled(dev))) return NULL; if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) { Loading