Coverity 1038523: Fix using cuda buffer slice that has been returned to the pool.

pull/409/merge
Anoop Saldanha 13 years ago committed by Victor Julien
parent 51cdd464a6
commit 1fb4aae993

@ -191,12 +191,17 @@ void CudaBufferCullCompletedSlices(CudaBufferData *cb_data,
cb_data->slice_tail = NULL; cb_data->slice_tail = NULL;
} }
max_culled_slice->next = NULL; max_culled_slice->next = NULL;
SCMutexUnlock(&cb_data->m);
} else { } else {
SCMutexUnlock(&cb_data->m); SCMutexUnlock(&cb_data->m);
return; return;
} }
culled_info->d_buffer_start_offset = slice_head->start_offset;
culled_info->d_buffer_len = (max_culled_slice->end_offset -
slice_head->start_offset + 1);
culled_info->op_buffer_start_offset = cb_data->op_buffer_read;
SCMutexUnlock(&cb_data->m);
/* push out the used slices to the the slice_pool */ /* push out the used slices to the the slice_pool */
SCMutexLock(&slice_pool_mutex); SCMutexLock(&slice_pool_mutex);
slice_temp = slice_head; slice_temp = slice_head;
@ -212,13 +217,6 @@ void CudaBufferCullCompletedSlices(CudaBufferData *cb_data,
culled_info->no_of_items++; culled_info->no_of_items++;
SCMutexUnlock(&slice_pool_mutex); SCMutexUnlock(&slice_pool_mutex);
SCMutexLock(&cb_data->m);
culled_info->d_buffer_start_offset = slice_head->start_offset;
culled_info->d_buffer_len = (max_culled_slice->end_offset -
slice_head->start_offset + 1);
culled_info->op_buffer_start_offset = cb_data->op_buffer_read;
SCMutexUnlock(&cb_data->m);
return; return;
} }

Loading…
Cancel
Save