re: net: dsa: qca8k: handle error with qca8k_read operation

From: Colin Ian King
Date: Tue May 18 2021 - 14:52:53 EST


Hi,

Static analysis of linux-next with Coverity has found several repeated
issues in the following commit:

commit 028f5f8ef44fcf87a456772cbb9f0d90a0a22884
Author: Ansuel Smith <ansuelsmth@xxxxxxxxx>
Date: Fri May 14 22:59:55 2021 +0200

net: dsa: qca8k: handle error with qca8k_read operation


The issues are as following:

322 for (i = 0; i < 4; i++) {
323 val = qca8k_read(priv, QCA8K_REG_ATU_DATA0 + (i * 4));

Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned value is
never true. val < 0U.

324 if (val < 0)
325 return val;
326
327 reg[i] = val;
328 }

...


397 /* Check for table full violation when adding an entry */
398 if (cmd == QCA8K_FDB_LOAD) {
399 reg = qca8k_read(priv, QCA8K_REG_ATU_FUNC);

Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned value is
never true. reg < 0U.

400 if (reg < 0)
401 return reg;
402 if (reg & QCA8K_ATU_FUNC_FULL)
403 return -1;
404 }

478 /* Check for table full violation when adding an entry */
479 if (cmd == QCA8K_VLAN_LOAD) {
480 reg = qca8k_read(priv, QCA8K_REG_VTU_FUNC1);

Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned value is
never true. reg < 0U.

481 if (reg < 0)
482 return reg;
483 if (reg & QCA8K_VTU_FUNC1_FULL)
484 return -ENOMEM;
485 }

508 reg = qca8k_read(priv, QCA8K_REG_VTU_FUNC0);

Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned value is
never true. reg < 0U.

509 if (reg < 0)
510 return reg;

and many others too.

There similar issues with commit:

commit ba5707ec58cfb6853dff41c2aae72deb6a03d389
Author: Ansuel Smith <ansuelsmth@xxxxxxxxx>
Date: Fri May 14 22:59:54 2021 +0200

net: dsa: qca8k: handle qca8k_set_page errors

for example:

162 val = qca8k_set_page(bus, page);

Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned value is
never true. val < 0U.

163 if (val < 0)
164 goto exit;

I suspect there are many others. So perhaps a review of recent patches
on this driver would address this unsigned less than zero compare issues.

Colin