From: James Bottomley Date: Fri, 18 Apr 2008 18:18:48 +0000 (-0500) Subject: libata: fix boot panic with SATAPI devices on non-SFF HBAs X-Git-Tag: v2.6.26-rc1~1142 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=855d854a33fca71cf68bad258bd5e66e5b265d10;p=linux-2.6 libata: fix boot panic with SATAPI devices on non-SFF HBAs The kernel now panics reliably on boot if you have a SATAPI device connected. The problem was introduced by the libata merge trying to pull out all the SFF code into a separate module. Unfortunately, if you're a satapi device you usually need to call atapi_request_sense, which has a bare invocation of a SFF callback which is NULL on non-SFF HBAs. Fix this by making the call conditional. Signed-off-by: James Bottomley Signed-off-by: Linus Torvalds --- diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index fedf62de94..c16e3cea1d 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -2394,7 +2394,8 @@ static void atapi_request_sense(struct ata_queued_cmd *qc) memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); #ifdef CONFIG_ATA_SFF - ap->ops->sff_tf_read(ap, &qc->tf); + if (ap->ops->sff_tf_read) + ap->ops->sff_tf_read(ap, &qc->tf); #endif /* fill these in, for the case where they are -not- overwritten */