mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-02 02:34:05 +08:00
[media] staging: atomisp: Fix endless recursion in hmm_init
hmm_init calls hmm_alloc to set dummy_ptr, hmm_alloc calls hmm_init when dummy_ptr is not yet set, which is the case in the call from hmm_init, so it calls hmm_init again, this continues until we have a stack overflow due to the recursion. This commit fixes this by adding a separate flag for tracking if hmm_init has been called. Not pretty, but it gets the job done, eventually we should be able to remove the hmm_init call from hmm_alloc. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
f1e627a41d
commit
af822177d6
@ -43,6 +43,7 @@ struct hmm_bo_device bo_device;
|
||||
struct hmm_pool dynamic_pool;
|
||||
struct hmm_pool reserved_pool;
|
||||
static ia_css_ptr dummy_ptr;
|
||||
static bool hmm_initialized;
|
||||
struct _hmm_mem_stat hmm_mem_stat;
|
||||
|
||||
/* p: private
|
||||
@ -186,6 +187,8 @@ int hmm_init(void)
|
||||
if (ret)
|
||||
dev_err(atomisp_dev, "hmm_bo_device_init failed.\n");
|
||||
|
||||
hmm_initialized = true;
|
||||
|
||||
/*
|
||||
* As hmm use NULL to indicate invalid ISP virtual address,
|
||||
* and ISP_VM_START is defined to 0 too, so we allocate
|
||||
@ -217,6 +220,7 @@ void hmm_cleanup(void)
|
||||
dummy_ptr = 0;
|
||||
|
||||
hmm_bo_device_exit(&bo_device);
|
||||
hmm_initialized = false;
|
||||
}
|
||||
|
||||
ia_css_ptr hmm_alloc(size_t bytes, enum hmm_bo_type type,
|
||||
@ -229,7 +233,7 @@ ia_css_ptr hmm_alloc(size_t bytes, enum hmm_bo_type type,
|
||||
/* Check if we are initialized. In the ideal world we wouldn't need
|
||||
this but we can tackle it once the driver is a lot cleaner */
|
||||
|
||||
if (!dummy_ptr)
|
||||
if (!hmm_initialized)
|
||||
hmm_init();
|
||||
/*Get page number from size*/
|
||||
pgnr = size_to_pgnr_ceil(bytes);
|
||||
|
Loading…
Reference in New Issue
Block a user