mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 23:00:21 +00:00
media: atomisp: don't pass a pointer to a local variable
As warned by gcc 12.1: drivers/staging/media/atomisp/pci/runtime/rmgr/src/rmgr_vbuf.c: In function 'ia_css_rmgr_acq_vbuf': drivers/staging/media/atomisp/pci/runtime/rmgr/src/rmgr_vbuf.c:275:33: error: storing the address of local variable 'h' in '*handle' [-Werror=dangling-pointer=] 275 | *handle = &h; | ~~~~~~~~^~~~ drivers/staging/media/atomisp/pci/runtime/rmgr/src/rmgr_vbuf.c:257:40: note: 'h' declared here 257 | struct ia_css_rmgr_vbuf_handle h; | ^ drivers/staging/media/atomisp/pci/runtime/rmgr/src/rmgr_vbuf.c:257:40: note: 'handle' declared here cc1: all warnings being treated as errors The logic uses a temporary struct to update the handler, but, instead of copying the value to the pointer sent by the caller, it replaces it with the content with a local variable. That's wrong, and may lead the caller to use a weird value. Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
7b602069cd
commit
fa1451374e
@ -254,7 +254,7 @@ void rmgr_pop_handle(struct ia_css_rmgr_vbuf_pool *pool,
|
||||
void ia_css_rmgr_acq_vbuf(struct ia_css_rmgr_vbuf_pool *pool,
|
||||
struct ia_css_rmgr_vbuf_handle **handle)
|
||||
{
|
||||
struct ia_css_rmgr_vbuf_handle h;
|
||||
struct ia_css_rmgr_vbuf_handle h = { 0 };
|
||||
|
||||
if ((!pool) || (!handle) || (!*handle)) {
|
||||
IA_CSS_LOG("Invalid inputs");
|
||||
@ -272,7 +272,7 @@ void ia_css_rmgr_acq_vbuf(struct ia_css_rmgr_vbuf_pool *pool,
|
||||
h.size = (*handle)->size;
|
||||
/* release ref to current buffer */
|
||||
ia_css_rmgr_refcount_release_vbuf(handle);
|
||||
*handle = &h;
|
||||
**handle = h;
|
||||
}
|
||||
/* get new buffer for needed size */
|
||||
if ((*handle)->vptr == 0x0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user