Re: [PATCH] drivers core: Fix oops when driver probe fails

From: Greg KH
Date: Tue Jul 27 2021 - 08:31:34 EST


On Tue, Jul 27, 2021 at 01:23:11PM +0200, Filip Schauer wrote:
> dma_range_map is freed to early, which might cause an oops when
> a driver probe fails.
> Call trace:
> is_free_buddy_page+0xe4/0x1d4
> __free_pages+0x2c/0x88
> dma_free_contiguous+0x64/0x80
> dma_direct_free+0x38/0xb4
> dma_free_attrs+0x88/0xa0
> dmam_release+0x28/0x34
> release_nodes+0x78/0x8c
> devres_release_all+0xa8/0x110
> really_probe+0x118/0x2d0
> __driver_probe_device+0xc8/0xe0
> driver_probe_device+0x54/0xec
> __driver_attach+0xe0/0xf0
> bus_for_each_dev+0x7c/0xc8
> driver_attach+0x30/0x3c
> bus_add_driver+0x17c/0x1c4
> driver_register+0xc0/0xf8
> __platform_driver_register+0x34/0x40
> ...
>
> This issue is introduced by commit d0243bbd5dd3 ("drivers core:
> Free dma_range_map when driver probe failed"). It frees
> dma_range_map before the call to devres_release_all, which is too
> early. The solution is to free dma_range_map only after
> devres_release_all.
>
> Fixes: d0243bbd5dd3 ("drivers core: Free dma_range_map when driver probe failed")
> Signed-off-by: Filip Schauer <filip@xxxxxx>
> ---
> drivers/base/dd.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Oh, nice catch! This is a v2, right? Next time please be explicit :)

thanks,

greg k-h