]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Coverity 1038523: Fix using cuda buffer slice that has been returned to the pool.
authorAnoop Saldanha <anoopsaldanha@gmail.com>
Wed, 26 Jun 2013 11:44:51 +0000 (17:14 +0530)
committerVictor Julien <victor@inliniac.net>
Wed, 26 Jun 2013 13:03:09 +0000 (15:03 +0200)
src/util-cuda-buffer.c

index a5401f6a686349fbf4bd9247951a0f675a99c889..acbeaed072a660bf65b12a3953734795bffe3533 100644 (file)
@@ -191,12 +191,17 @@ void CudaBufferCullCompletedSlices(CudaBufferData *cb_data,
             cb_data->slice_tail = NULL;
         }
         max_culled_slice->next = NULL;
-        SCMutexUnlock(&cb_data->m);
     } else {
         SCMutexUnlock(&cb_data->m);
         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 */
     SCMutexLock(&slice_pool_mutex);
     slice_temp = slice_head;
@@ -212,13 +217,6 @@ void CudaBufferCullCompletedSlices(CudaBufferData *cb_data,
     culled_info->no_of_items++;
     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;
 }