Changed the type of the variable `qidx' from u_int8_t to int,
mainly to quiet a warning emitted by GCC 3.3 about comparing a variable to a value which is larger than the former can hold. The value was checked to make sure the `np->squeue' array is not accessed behind its boundary. This worked due to possibly accidental truncation when (np->squeueput + 1) was larger than or equal to MAX_START (256) when it was assigned to `qidx'. `qidx' is used to hold the next position in the start queue for an insertion. The new type was chosen because some other code in the function ncr_freeze_devq() also uses plain integers to hold those indices. Wrapped the line after the closing parenthesis of an `if' condition.
This commit is contained in:
parent
77fa6d308c
commit
0794d13291
@ -3880,7 +3880,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
|
||||
int segments;
|
||||
u_int8_t nego;
|
||||
u_int8_t idmsg;
|
||||
u_int8_t qidx;
|
||||
int qidx;
|
||||
|
||||
tp = &np->target[ccb->ccb_h.target_id];
|
||||
csio = &ccb->csio;
|
||||
@ -4154,7 +4154,8 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
|
||||
*/
|
||||
|
||||
qidx = np->squeueput + 1;
|
||||
if (qidx >= MAX_START) qidx=0;
|
||||
if (qidx >= MAX_START)
|
||||
qidx = 0;
|
||||
np->squeue [qidx ] = NCB_SCRIPT_PHYS (np, idle);
|
||||
np->squeue [np->squeueput] = CCB_PHYS (cp, phys);
|
||||
np->squeueput = qidx;
|
||||
|
Loading…
x
Reference in New Issue
Block a user