Enforce MAX_SIZE in objcache
authorJack Miller <jack@codezen.org>
Wed, 27 Apr 2016 22:05:42 +0000 (17:05 -0500)
committerJack Miller <jack@codezen.org>
Wed, 27 Apr 2016 22:09:14 +0000 (17:09 -0500)
mm/objcache.c

index 8946149..f0b974b 100644 (file)
@@ -73,8 +73,8 @@
 #define OVERHEAD_BYTES          (OVERHEAD_BITS / 8)
 #define OVERHEAD_LONGS          (OVERHEAD_BYTES / 8)
 #define OVERHEAD_CELLS          (OVERHEAD_BYTES / CELL_SIZE)
-
 #define FREE_CELLS              (TOTAL_CELLS - OVERHEAD_CELLS)
+#define OBJCACHE_MAXSIZE        (FREE_CELLS * CELL_SIZE)
 
 /* How many bytes of the bitmap can we assume are taken by metadata */
 #define SKIP_BYTES              (OVERHEAD_CELLS / 8)
@@ -191,6 +191,9 @@ void *objcache_get(struct objcache *objcache, u32 size)
     int idx;
     void *ret;
 
+    if (size > OBJCACHE_MAXSIZE)
+        return NULL;
+
     idx = __oc_find_free_cells(objcache, size / CELL_SIZE, (void **) &page);
 
     if (idx == -1) {