Skip to content

Commit cb26953

Browse files
Fix buffer data deallocation in unload path / stack frame size compilation warning
1 parent e598321 commit cb26953

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

driver/mmap_banked_buffer.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ void cleanup_mmap_buffer_data_banked_buffer_t(banked_buffer_t *buf)
8181

8282
printk(KERN_INFO "Cleaning up data structures for the banked buffer\n");
8383
cleanup_mmap_buffer_data(buf->banks);
84-
kfree(buf->banks);
8584
kfree(buf);
8685
}
8786

driver/mmap_fault_handler.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -903,8 +903,6 @@ static void pve_release(struct kref *kref)
903903
__pve_release(pve);
904904
}
905905

906-
static void pve_empty(struct kref *kref){}
907-
908906
void perma_vma_close(struct vm_area_struct *vma)
909907
{
910908
//struct pr_vma_data *pvd;
@@ -933,11 +931,9 @@ void perma_vma_close(struct vm_area_struct *vma)
933931
pve = ((struct fastmap_info *)vma->vm_private_data)->pve;
934932
DMAP_BGON(pve == NULL);
935933

936-
pve_release(&pve->refcount);
937-
if(kref_put(&pve->refcount, pve_empty) == 1){ // pve_release called!
938-
// FIXME
939-
// kmem_cache_free(pve_alloc_cache, pve);
940-
// vma->is_fastmap = false;
934+
if(kref_put(&pve->refcount, pve_release) == 1){ // pve_release called!
935+
kmem_cache_free(pve_alloc_cache, pve);
936+
((struct fastmap_info *)vma->vm_private_data)->is_fastmap = false;
941937
}
942938

943939
//atomic64_dec(&pvd->cnt);

driver/mmap_generational_fifo_buffer.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,8 @@ unsigned int try_purge_pages_fast(fifo_buffer_t *buf, unsigned int N, int qid)
612612
unsigned int radix_tree_id;
613613
#endif
614614
//struct tagged_page **pgs = page_address(alloc_page(GFP_KERNEL));
615-
struct tagged_page *pgs[192];
615+
struct tagged_page **pgs = vmalloc(192 * sizeof(struct tagged_page *));
616+
DMAP_BGON(pgs == NULL);
616617

617618
N = 192;
618619

@@ -666,6 +667,7 @@ unsigned int try_purge_pages_fast(fifo_buffer_t *buf, unsigned int N, int qid)
666667

667668
//free_page((long unsigned int)pgs);
668669

670+
vfree(pgs);
669671
return num_pgs;
670672
}
671673

@@ -869,15 +871,18 @@ fifo_buffer_t *init_mmap_buffer_data_fifo_buffer_t(fifo_buffer_t *dummy, buf_ld_
869871

870872
void cleanup_mmap_buffer_data_fifo_buffer_t(fifo_buffer_t *buf)
871873
{
874+
int i;
872875
buf->evictor_run = false;
873876
while(atomic_read(&active_evictors) != 0)
874877
ssleep(1);
875878
ssleep(1); /* wait a bit more for everything to complete */
876879

877880
free_hash_table(&buf->page_map);
878881

879-
kfree(buf->primary_fifo_data);
880-
kfree(buf->dirty_queue);
882+
for(i=0; i < NUM_QUEUES; i++)
883+
kfree(buf->primary_fifo_data[i]);
884+
for(i=0; i < EVICTOR_THREADS; i++)
885+
kfree(buf->dirty_queue[i]);
881886
kfree(buf);
882887
}
883888

0 commit comments

Comments
 (0)