Add kmalloc failover to vmalloc
[lttng-modules.git] / lib / prio_heap / lttng_prio_heap.c
index 2fce143c1d3e00bc7d5f342da0297ff7a5ee047e..01ed69f2cac1a52b62a794e22ca5a43f20a798b9 100644 (file)
  *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
  */
 
 #include <linux/slab.h>
-#include "lttng_prio_heap.h"
+#include <lib/prio_heap/lttng_prio_heap.h>
+#include <wrapper/vmalloc.h>
 
 #ifdef DEBUG_HEAP
 void lttng_check_heap(const struct lttng_ptr_heap *heap)
@@ -62,12 +71,12 @@ int heap_grow(struct lttng_ptr_heap *heap, size_t new_len)
                return 0;
 
        heap->alloc_len = max_t(size_t, new_len, heap->alloc_len << 1);
-       new_ptrs = kmalloc(heap->alloc_len * sizeof(void *), heap->gfpmask);
+       new_ptrs = lttng_kvmalloc(heap->alloc_len * sizeof(void *), heap->gfpmask);
        if (!new_ptrs)
                return -ENOMEM;
        if (heap->ptrs)
                memcpy(new_ptrs, heap->ptrs, heap->len * sizeof(void *));
-       kfree(heap->ptrs);
+       lttng_kvfree(heap->ptrs);
        heap->ptrs = new_ptrs;
        return 0;
 }
@@ -101,7 +110,7 @@ int lttng_heap_init(struct lttng_ptr_heap *heap, size_t alloc_len,
 
 void lttng_heap_free(struct lttng_ptr_heap *heap)
 {
-       kfree(heap->ptrs);
+       lttng_kvfree(heap->ptrs);
 }
 
 static void heapify(struct lttng_ptr_heap *heap, size_t i)
This page took 0.023821 seconds and 4 git commands to generate.