cregit-Linux how code gets into the kernel

Release 4.18 lib/list_debug.c

Directory: lib
/*
 * Copyright 2006, Red Hat, Inc., Dave Jones
 * Released under the General Public License (GPL).
 *
 * This file contains the linked list validation for DEBUG_LIST.
 */

#include <linux/export.h>
#include <linux/list.h>
#include <linux/bug.h>
#include <linux/kernel.h>
#include <linux/rculist.h>

/*
 * Check that the data structures for the list manipulations are reasonably
 * valid. Failures here indicate memory corruption (and possibly an exploit
 * attempt).
 */


bool __list_add_valid(struct list_head *new, struct list_head *prev, struct list_head *next) { if (CHECK_DATA_CORRUPTION(next->prev != prev, "list_add corruption. next->prev should be prev (%px), but was %px. (next=%px).\n", prev, next->prev, next) || CHECK_DATA_CORRUPTION(prev->next != next, "list_add corruption. prev->next should be next (%px), but was %px. (prev=%px).\n", next, prev->next, prev) || CHECK_DATA_CORRUPTION(new == prev || new == next, "list_add double add: new=%px, prev=%px, next=%px.\n", new, prev, next)) return false; return true; }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones5058.82%337.50%
Kees Cook1618.82%337.50%
Chris Metcalf1618.82%112.50%
Matthew Wilcox33.53%112.50%
Total85100.00%8100.00%

EXPORT_SYMBOL(__list_add_valid);
bool __list_del_entry_valid(struct list_head *entry) { struct list_head *prev, *next; prev = entry->prev; next = entry->next; if (CHECK_DATA_CORRUPTION(next == LIST_POISON1, "list_del corruption, %px->next is LIST_POISON1 (%px)\n", entry, LIST_POISON1) || CHECK_DATA_CORRUPTION(prev == LIST_POISON2, "list_del corruption, %px->prev is LIST_POISON2 (%px)\n", entry, LIST_POISON2) || CHECK_DATA_CORRUPTION(prev->next != entry, "list_del corruption. prev->next should be %px, but was %px\n", entry, prev->next) || CHECK_DATA_CORRUPTION(next->prev != entry, "list_del corruption. next->prev should be %px, but was %px\n", entry, next->prev)) return false; return true; }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones3737.76%225.00%
Linus Torvalds2323.47%112.50%
Kees Cook1818.37%337.50%
Baruch Siach1616.33%112.50%
Matthew Wilcox44.08%112.50%
Total98100.00%8100.00%

EXPORT_SYMBOL(__list_del_entry_valid);

Overall Contributors

PersonTokensPropCommitsCommitProp
Dave Jones10349.05%426.67%
Kees Cook3818.10%426.67%
Linus Torvalds2310.95%16.67%
Baruch Siach167.62%16.67%
Chris Metcalf167.62%16.67%
Matthew Wilcox73.33%16.67%
Paul Gortmaker73.33%320.00%
Total210100.00%15100.00%
Directory: lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.