mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 07:24:39 +08:00
media: cx231xx: fix a memleak in cx231xx_init_isoc
[ Upstream commit5d3c8990e2
] The dma_q->p_left_data alloced by kzalloc should be freed in all the following error handling paths. However, it hasn't been freed in the allocation error paths of dev->video_mode.isoc_ctl.urb and dev->video_mode.isoc_ctl.transfer_buffer. On the other hand, the dma_q->p_left_data did be freed in the error-handling paths after that of dev->video_mode.isoc_ctl.urb and dev->video_mode.isoc_ctl.transfer_buffer, by calling cx231xx_uninit_isoc(dev). So the same free operation should be done in error-handling paths of those two allocation. Fixes:64fbf44455
("[media] cx231xx: Added support for Carraera, Shelby, RDx_253S and VIDEO_GRABBER") Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
3258bc1f8c
commit
1e2c9e7418
@ -1024,6 +1024,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
||||
if (!dev->video_mode.isoc_ctl.urb) {
|
||||
dev_err(dev->dev,
|
||||
"cannot alloc memory for usb buffers\n");
|
||||
kfree(dma_q->p_left_data);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1033,6 +1034,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
||||
dev_err(dev->dev,
|
||||
"cannot allocate memory for usbtransfer\n");
|
||||
kfree(dev->video_mode.isoc_ctl.urb);
|
||||
kfree(dma_q->p_left_data);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user