Skip to content

Commit

Permalink
tx4938ide: Avoid underflow on calculation of a wait cycle
Browse files Browse the repository at this point in the history
Make 'wt' variable signed while it can be negative during calculation.

Suggested-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: sshtylyov@ru.mvista.com
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
  • Loading branch information
Atsushi Nemoto authored and Bartlomiej Zolnierkiewicz committed Nov 2, 2008
1 parent 9d4eb0a commit 7afa053
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/ide/tx4938ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ static void tx4938ide_tune_ebusc(unsigned int ebus_ch,
unsigned int sp = (cr >> 4) & 3;
unsigned int clock = gbus_clock / (4 - sp);
unsigned int cycle = 1000000000 / clock;
unsigned int wt, shwt;
unsigned int shwt;
int wt;

/* Minimum DIOx- active time */
wt = DIV_ROUND_UP(t->act8b, cycle) - 2;
/* IORDY setup time: 35ns */
wt = max(wt, DIV_ROUND_UP(35, cycle));
wt = max_t(int, wt, DIV_ROUND_UP(35, cycle));
/* actual wait-cycle is max(wt & ~1, 1) */
if (wt > 2 && (wt & 1))
wt++;
Expand Down

0 comments on commit 7afa053

Please sign in to comment.