|
@@ -1086,13 +1086,15 @@ int dp_mst_sim_update(void *mst_sim_context, u32 port_num,
|
|
|
kfree(ctx->ports);
|
|
|
ctx->port_num = 0;
|
|
|
|
|
|
- ctx->ports = kcalloc(port_num, sizeof(*ports), GFP_KERNEL);
|
|
|
- if (!ctx->ports) {
|
|
|
- rc = -ENOMEM;
|
|
|
- goto fail;
|
|
|
+ if (port_num) {
|
|
|
+ ctx->ports = kcalloc(port_num, sizeof(*ports), GFP_KERNEL);
|
|
|
+ if (!ctx->ports) {
|
|
|
+ rc = -ENOMEM;
|
|
|
+ goto fail;
|
|
|
+ }
|
|
|
+ ctx->port_num = port_num;
|
|
|
}
|
|
|
|
|
|
- ctx->port_num = port_num;
|
|
|
for (i = 0; i < port_num; i++) {
|
|
|
ctx->ports[i] = ports[i];
|
|
|
if (ports[i].edid_size) {
|
|
@@ -1118,6 +1120,7 @@ fail:
|
|
|
for (i = 0; i < ctx->port_num; i++)
|
|
|
kfree(ctx->ports[i].edid);
|
|
|
kfree(ctx->ports);
|
|
|
+ ctx->port_num = 0;
|
|
|
}
|
|
|
|
|
|
mutex_unlock(&ctx->session_lock);
|