From 6e08dc6e8b3f747c9dc914f6c09b432a60654db3 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Mon, 23 Aug 2010 11:27:27 +0200 Subject: [PATCH] --- yaml --- r: 210015 b: refs/heads/master c: 60f5d6ef6b6e70fe850554381fd8336f11530002 h: refs/heads/master i: 210013: da452f3f09cda331da20bb1e144dfdafb51194b9 210011: fe21f7d286f857d6680b3c733f2e2f40b7557ac8 210007: a5c3c33ad88fed8147b64d9bd132f9de7c70821f 209999: dcefd47ebe188afd00c794099af7ba3f466b3c22 209983: 074cf6776d33e64e2f1d540a1edc58e7ae611586 v: v3 --- [refs] | 2 +- trunk/drivers/ata/libata-core.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 35e166bdd3be..3fd0b1c9c2d4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d26377b83972917cfb8f5bee193981aaa1130627 +refs/heads/master: 60f5d6ef6b6e70fe850554381fd8336f11530002 diff --git a/trunk/drivers/ata/libata-core.c b/trunk/drivers/ata/libata-core.c index 7ef7c4f216fa..c035b3d041ee 100644 --- a/trunk/drivers/ata/libata-core.c +++ b/trunk/drivers/ata/libata-core.c @@ -5111,15 +5111,18 @@ void ata_qc_issue(struct ata_queued_cmd *qc) qc->flags |= ATA_QCFLAG_ACTIVE; ap->qc_active |= 1 << qc->tag; - /* We guarantee to LLDs that they will have at least one + /* + * We guarantee to LLDs that they will have at least one * non-zero sg if the command is a data command. */ - BUG_ON(ata_is_data(prot) && (!qc->sg || !qc->n_elem || !qc->nbytes)); + if (WARN_ON_ONCE(ata_is_data(prot) && + (!qc->sg || !qc->n_elem || !qc->nbytes))) + goto sys_err; if (ata_is_dma(prot) || (ata_is_pio(prot) && (ap->flags & ATA_FLAG_PIO_DMA))) if (ata_sg_setup(qc)) - goto sg_err; + goto sys_err; /* if device is sleeping, schedule reset and abort the link */ if (unlikely(qc->dev->flags & ATA_DFLAG_SLEEPING)) { @@ -5136,7 +5139,7 @@ void ata_qc_issue(struct ata_queued_cmd *qc) goto err; return; -sg_err: +sys_err: qc->err_mask |= AC_ERR_SYSTEM; err: ata_qc_complete(qc);