On 8/22/20 2:34 AM, Tomer Samara wrote:
On Fri, Aug 21, 2020 at 09:25:26AM -0700, Randy Dunlap wrote:
On 8/21/20 8:28 AM, Tomer Samara wrote:
Remove BUG() from ion_sytem_heap.c
this fix the following checkpatch issue: Avoid crashing the kernel - try using WARN_ON & recovery code ratherthan BUG() or BUG_ON().
Signed-off-by: Tomer Samara tomersamara98@gmail.com
drivers/staging/android/ion/ion_system_heap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c index eac0632ab4e8..00d6154aec34 100644 --- a/drivers/staging/android/ion/ion_system_heap.c +++ b/drivers/staging/android/ion/ion_system_heap.c @@ -30,7 +30,7 @@ static int order_to_index(unsigned int order) for (i = 0; i < NUM_ORDERS; i++) if (order == orders[i]) return i;
- BUG();
- /* This is impossible. */ return -1;
}
Hi, Please explain why this is impossible.
If some caller calls order_to_index(5), it will return -1, yes?
-- ~Randy
As Dan Carpenter says here https://lkml.kernel.org/lkml/cover.1597865771.git.tomersamara98@gmail.com/T/.... After looking at callers we see that order_to_index called from 2 functions:
alloc_buffer_page called from alloc_largest_available which loop over all legit order nubmers ( Flow: alloc_largest_available-->alloc_buffer_page-->order_to_index )
free_buffer_page takes the order using compound_order, which return 0 or the order number for the page, this function has 2 callers too, ion_system_heap_allocate (which called it in case of failure at sg_alloc_table, thus calling from this flow will no casue error) and ion_system_heap_free (which will be called on every sg table in the buffer that allocated good, meaning from this flow also error will not be created). ( Flows: ion_system_heap_free --> free_buffer_page --> order_to_index ion_system_heap_allocate --> free_buffer_page --> order_to_index )
Of course if some user will use this function with wrong order number he will be able to get this -1. So should I remove this comment and resotre the error checks?
I think so, but that's just an opinion.
Btw, this is the same reason that I dropped the error check at ion_page_pool_shrink, so should I restore here also?
IMO yes.
Getting rid of BUG()s is a good goal, but usually it's not so easy.
thanks.