Messages in this thread | | | Date | Thu, 7 Sep 2006 13:27:07 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH libata-dev#upstream-fixes] libata: ignore CFA signature while sanity-checking an ATAPI device |
| |
On Thu, 7 Sep 2006 20:32:24 +0900 Tejun Heo <htejun@gmail.com> wrote:
> 0x848a in ID word 0 indicates CFA device iff the ID data is obtained > from IDENTIFY DEVICE. For ATAPI devices, 0x848a in ID work 0 > indicates valid ATAPI device. Fix sanity check in ata_dev_read_id() > such that ATAPI devices reporting 0x848a in ID word 0 is not handled > as error. > > The problem is identified by J.A. Magallon with HL-DT-ST DVDRAM > GSA-4120B. > > Signed-off-by: Tejun Helo <htejun@gmail.com> > Cc: J.A. Magallon <jamagallon@ono.com> > --- > Jeff, this is a regression and thus should go into .19.
You mean 2.6.18, yes?
> diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c > index 73dd6c8..427b73a 100644 > --- a/drivers/scsi/libata-core.c > +++ b/drivers/scsi/libata-core.c > @@ -1256,10 +1256,15 @@ int ata_dev_read_id(struct ata_device *d > swap_buf_le16(id, ATA_ID_WORDS); > > /* sanity check */ > - if ((class == ATA_DEV_ATA) != (ata_id_is_ata(id) | ata_id_is_cfa(id))) { > - rc = -EINVAL; > - reason = "device reports illegal type"; > - goto err_out; > + rc = -EINVAL; > + reason = "device reports illegal type"; > + > + if (class == ATA_DEV_ATA) { > + if (!ata_id_is_ata(id) && !ata_id_is_cfa(id)) > + goto err_out; > + } else { > + if (ata_id_is_ata(id)) > + goto err_out; > } > > if (post_reset && class == ATA_DEV_ATA) { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |