-
-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Potential infinite loop bug in ixgbe driver #960
Comments
Thanks for the report! I do agree that we need a timeout there. I believe that @Ramla-I is working on a series of formally-verified device drivers for the NICs in Theseus, so this is likely already in progress or being addressed with a redesign. In any case, thanks for bringing this up, and feel free to identify the other places in the code you've found such loops in this issue too. |
Yes, this is a bug and should be addressed. We've just been lucky that we've never been stuck in the infinite loop. I'll make sure to address these changes in a future driver PR, but let's keep this issue open till it's resolved. |
I'm awfully sorry for the late reply, but thank you for the feedback. Yes there're two more cases, and I've cross checked with linux code to filter out false positives, and the rest are:
Still I'm sorry for the late reply and thank you again for the feedback. |
Hi @Ramla-I @kevinaboos , sorry for disturbing. I wonder if the latest bugs mentioned in the last reply can be confirmed. Thank you very much! |
Right, these are both infinite loop bugs. Thanks for pointing them out! |
Hi Theseus community, I would like to report a potential bug.
The following lines of code contains a potential infinite loop bug.
The bug is triggered when the device misbehaves, and generates faulty register values that never has the receive enable bit.
The driver will be stuck in this loop, resulting in denial of service.
The linux ixgbe driver avoids the problem via a counter bounding the loop, like
Can we confirm this bug? Also it can be fixed simply via a counter like the linux driver.
I've found a few similar cases but this one is representative.
Thank you very much.
The text was updated successfully, but these errors were encountered: