提交 ad2feebd 编写于 作者: S Sebin Sebastian 提交者: Alex Deucher

drm/amdgpu: double free error and freeing uninitialized null pointer

Fix a double free and an uninitialized pointer read error. Both tmp and
new are pointing at same address and both are freed which leads to
double free. Adding a check to verify if new and tmp are free in the
error_free label fixes the double free issue. new is not initialized to
null which also leads to a free on an uninitialized pointer.
Reviewed-by: NAndré Almeida <andrealmeid@igalia.com>
Suggested by: S. Amaranath <Amaranath.Somalapuram@amd.com>
Signed-off-by: NSebin Sebastian <mailmesebin00@gmail.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 a6250bdb
...@@ -1705,7 +1705,7 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, ...@@ -1705,7 +1705,7 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f,
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private; struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private;
char reg_offset[11]; char reg_offset[11];
uint32_t *new, *tmp = NULL; uint32_t *new = NULL, *tmp = NULL;
int ret, i = 0, len = 0; int ret, i = 0, len = 0;
do { do {
...@@ -1747,6 +1747,7 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f, ...@@ -1747,6 +1747,7 @@ static ssize_t amdgpu_reset_dump_register_list_write(struct file *f,
ret = size; ret = size;
error_free: error_free:
if (tmp != new)
kfree(tmp); kfree(tmp);
kfree(new); kfree(new);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册