Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6a31950 authored by Roel Kluin's avatar Roel Kluin Committed by Jean Delvare
Browse files

i2c: Test off by one in {piix4,vt596}_transaction()



With `while (timeout++ < MAX_TIMEOUT)' timeout reaches MAX_TIMEOUT + 1
after the loop. This is probably unlikely to produce a problem.

Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
parent 0b2c3688
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -324,12 +324,12 @@ static int piix4_transaction(void)
	else
		msleep(1);

	while ((timeout++ < MAX_TIMEOUT) &&
	while ((++timeout < MAX_TIMEOUT) &&
	       ((temp = inb_p(SMBHSTSTS)) & 0x01))
		msleep(1);

	/* If the SMBus is still busy, we give up */
	if (timeout >= MAX_TIMEOUT) {
	if (timeout == MAX_TIMEOUT) {
		dev_err(&piix4_adapter.dev, "SMBus Timeout!\n");
		result = -ETIMEDOUT;
	}
+2 −2
Original line number Diff line number Diff line
@@ -165,10 +165,10 @@ static int vt596_transaction(u8 size)
	do {
		msleep(1);
		temp = inb_p(SMBHSTSTS);
	} while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT));
	} while ((temp & 0x01) && (++timeout < MAX_TIMEOUT));

	/* If the SMBus is still busy, we give up */
	if (timeout >= MAX_TIMEOUT) {
	if (timeout == MAX_TIMEOUT) {
		result = -ETIMEDOUT;
		dev_err(&vt596_adapter.dev, "SMBus timeout!\n");
	}