On 4/11/2018 3:32 AM, Jia-Ju Bai wrote:
i40iw_add_mqh_4() is never called in atomic context, because it
calls rtnl_lock() that can sleep.
Despite never getting called from atomic context,
i40iw_add_mqh_4() calls kzalloc() with GFP_ATOMIC,
which does not sleep for allocation.
GFP_ATOMIC is not necessary and can be replaced with GFP_KERNEL,
which can sleep and improve the possibility of sucessful allocation.
Just a general comment. I don't know that this is the greatest idea. I
can imagine instances where sleeping is OK as far as how the code is
written, but for performance reasons you would rather fail than sleep.
As to whether that is the case here I'll let the i40iw folks comment.
This is found by a static analysis tool named DCNS written by myself.
And I also manually check it.
You should probably post a pointer to your tool.