On Tue, 20 Jul 2021 02:02:26 +0000, Justin He wrote:
quoted
quoted
For instance:
_qed_mcp_cmd_and_union()
In while loop
spin_lock_bh()
qed_mcp_has_pending_cmd() (assume false), will break the loop
I agree till here.
quoted
if (cnt >= max_retries) {
...
return -EAGAIN; <-- here returns -EAGAIN without invoking bh unlock
}
Because of break, cnt has not been increased.
- cnt is still less than max_retries.
- if (cnt >= max_retries) will not be *true*, leading to spin_unlock_bh().
Hence pairing completed.
Sorry, indeed. Let me check other possibilities.
@David S. Miller Sorry for the inconvenience, could you please revert it
in netdev tree?
Please submit a revert patch with the conclusions from the discussion
included in the commit message.