Skip to content

Commit 2b2cf9c

Browse files
Max Blaeserkylophone
authored andcommitted
fix: minor CUDA related memory leaks
1 parent b9ac69e commit 2b2cf9c

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

libvmaf/src/cuda/picture_cuda.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ int vmaf_cuda_picture_free(VmafPicture *pic, void *cookie)
216216
if (!pic) return -EINVAL;
217217

218218
int err = vmaf_ref_load(pic->ref);
219-
if (!err) -EINVAL;
219+
if (!err) return -EINVAL;
220220

221221
VmafPicturePrivate *priv = pic->priv;
222222
VmafCudaCookie *cuda_cookie = cookie;
@@ -232,6 +232,7 @@ int vmaf_cuda_picture_free(VmafPicture *pic, void *cookie)
232232
CHECK_CUDA(cuEventDestroy(priv->cuda.ready));
233233
CHECK_CUDA(cuStreamDestroy(priv->cuda.str));
234234
CHECK_CUDA(cuCtxPopCurrent(NULL));
235+
vmaf_ref_close(pic->ref);
235236
free(priv);
236237
memset(pic, 0, sizeof(*pic));
237238

libvmaf/src/cuda/ring_buffer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ int vmaf_ring_buffer_close(VmafRingBuffer *ring_buffer)
8585
}
8686

8787
free(ring_buffer->pic);
88+
free(ring_buffer);
8889
return err;
8990
}
9091

libvmaf/src/feature/cuda/integer_adm_cuda.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,10 @@ static int init_fex_cuda(VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt
11231123
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_ref);
11241124
free(s->buf.tmp_ref);
11251125
}
1126+
if (s->buf.tmp_dis) {
1127+
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_dis);
1128+
free(s->buf.tmp_dis);
1129+
}
11261130
if (s->buf.tmp_accum) {
11271131
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_accum);
11281132
free(s->buf.tmp_accum);
@@ -1197,6 +1201,10 @@ static int close_fex_cuda(VmafFeatureExtractor *fex)
11971201
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_ref);
11981202
free(s->buf.tmp_ref);
11991203
}
1204+
if (s->buf.tmp_dis) {
1205+
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_dis);
1206+
free(s->buf.tmp_dis);
1207+
}
12001208
if (s->buf.tmp_accum) {
12011209
ret |= vmaf_cuda_buffer_free(fex->cu_state, s->buf.tmp_accum);
12021210
free(s->buf.tmp_accum);

libvmaf/src/feature/cuda/integer_vif_cuda.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,9 @@ static int init_fex_cuda(VmafFeatureExtractor *fex, enum VmafPixelFormat pix_fmt
203203
if (s->buf.accum_host) {
204204
ret |= vmaf_cuda_buffer_host_free(fex->cu_state, s->buf.accum_host);
205205
}
206+
if (s->buf.cpu_param_buf) {
207+
free(s->buf.cpu_param_buf);
208+
}
206209

207210
return -ENOMEM;
208211
}
@@ -517,6 +520,9 @@ static int close_fex_cuda(VmafFeatureExtractor *fex)
517520
if (s->buf.accum_host) {
518521
ret |= vmaf_cuda_buffer_host_free(fex->cu_state, s->buf.accum_host);
519522
}
523+
if (s->buf.cpu_param_buf) {
524+
free(s->buf.cpu_param_buf);
525+
}
520526
ret |= vmaf_dictionary_free(&s->feature_name_dict);
521527
return ret;
522528
}

0 commit comments

Comments
 (0)