aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/atom.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index 247f8ee7e940..58845e053b36 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -1136,6 +1136,7 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32
1136 int len, ws, ps, ptr; 1136 int len, ws, ps, ptr;
1137 unsigned char op; 1137 unsigned char op;
1138 atom_exec_context ectx; 1138 atom_exec_context ectx;
1139 int ret = 0;
1139 1140
1140 if (!base) 1141 if (!base)
1141 return -EINVAL; 1142 return -EINVAL;
@@ -1168,7 +1169,8 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32
1168 if (ectx.abort) { 1169 if (ectx.abort) {
1169 DRM_ERROR("atombios stuck executing %04X (len %d, WS %d, PS %d) @ 0x%04X\n", 1170 DRM_ERROR("atombios stuck executing %04X (len %d, WS %d, PS %d) @ 0x%04X\n",
1170 base, len, ws, ps, ptr - 1); 1171 base, len, ws, ps, ptr - 1);
1171 return -EINVAL; 1172 ret = -EINVAL;
1173 goto free;
1172 } 1174 }
1173 1175
1174 if (op < ATOM_OP_CNT && op > 0) 1176 if (op < ATOM_OP_CNT && op > 0)
@@ -1183,9 +1185,10 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32
1183 debug_depth--; 1185 debug_depth--;
1184 SDEBUG("<<\n"); 1186 SDEBUG("<<\n");
1185 1187
1188free:
1186 if (ws) 1189 if (ws)
1187 kfree(ectx.ws); 1190 kfree(ectx.ws);
1188 return 0; 1191 return ret;
1189} 1192}
1190 1193
1191int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) 1194int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params)