fs-backend: Fix freelist implementation
PATCH 1/1 fs-backend: Fix freelist implementation
fs-backend: Fix freelist implementation
Signed-off-by Samuel Thibault <[email protected]>
tools/fs-back/fs-backend.c +2 -2
@@ -110,9 +110,9 @@unsigned short *freelist; requests =malloc (sizeof (struct fs_request ) *nr_entries); - freelist =malloc (sizeof (unsigned short ) * nr_entries); + freelist =malloc (sizeof (unsigned short ) * (nr_entries +1 ));memset (requests,0 ,sizeof (struct fs_request ) * nr_entries); -memset (freelist,0 ,sizeof (unsigned short ) * nr_entries); +memset (freelist,0 ,sizeof (unsigned short ) * (nr_entries +1 ));for (i=0 ; i< nr_entries; i++) { requests[i].active =0 ;
tools/fs-back/fs-backend.h +2 -2
@@ -72,14 +72,14 @@static inline void add_id_to_freelist (unsigned int id,unsigned short * freelist) { - freelist[id] = freelist[0 ]; + freelist[id +1 ] = freelist[0 ]; freelist[0 ] = id; }static inline unsigned short get_id_from_freelist (unsigned short * freelist) {unsigned int id = freelist[0 ]; - freelist[0 ] = freelist[id]; + freelist[0 ] = freelist[id +1 ];return id; }