All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libata: Fix division by zero
@ 2015-04-08 12:51 Alan
  2015-04-08 13:52 ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 4+ messages in thread
From: Alan @ 2015-04-08 12:51 UTC (permalink / raw)
  To: tj, linux-ide

(Coverity 1192289, 1192292, 1192294)

We have several controllers that in some cases use ata_timing_compute but do
not do UDMA. They pass 0 for UT, which ends up with us doing a division by
zero. We could pass some other bogus value in or we could make the libata
code do the sensible thing and treat a UT of 0 as meaning "I'm not asking
about UDMA".

This patches does the latter which is IMHO the more robust option.

Signed-off-by: Alan Cox <alan@linux.intel.com>
---
 0 files changed

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index f6cb1f1..6b1bd36 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2966,7 +2966,8 @@ static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q
 	q->recover	= EZ(t->recover    * 1000,  T);
 	q->dmack_hold	= EZ(t->dmack_hold * 1000,  T);
 	q->cycle	= EZ(t->cycle      * 1000,  T);
-	q->udma		= EZ(t->udma       * 1000, UT);
+	if (UT)
+		q->udma		= EZ(t->udma       * 1000, UT);
 }
 
 void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-04-08 15:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-08 12:51 [PATCH] libata: Fix division by zero Alan
2015-04-08 13:52 ` Bartlomiej Zolnierkiewicz
2015-04-08 14:03   ` Bartlomiej Zolnierkiewicz
2015-04-08 15:04   ` One Thousand Gnomes

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.