cregit-Linux how code gets into the kernel

Release 4.10 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) { CHECK_DATA_CORRUPTION(next->prev != prev, "list_add corruption. next->prev should be prev (%p), but was %p. (next=%p).\n", prev, next->prev, next); CHECK_DATA_CORRUPTION(prev->next != next, "list_add corruption. prev->next should be next (%p), but was %p. (prev=%p).\n", next, prev->next, prev); CHECK_DATA_CORRUPTION(new == prev || new == next, "list_add double add: new=%p, prev=%p, next=%p.\n", new, prev, next); return true; }

Contributors

PersonTokensPropCommitsCommitProp
dave jonesdave jones5265.00%350.00%
chris metcalfchris metcalf1822.50%116.67%
kees cookkees cook1012.50%233.33%
Total80100.00%6100.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; CHECK_DATA_CORRUPTION(next == LIST_POISON1, "list_del corruption, %p->next is LIST_POISON1 (%p)\n", entry, LIST_POISON1); CHECK_DATA_CORRUPTION(prev == LIST_POISON2, "list_del corruption, %p->prev is LIST_POISON2 (%p)\n", entry, LIST_POISON2); CHECK_DATA_CORRUPTION(prev->next != entry, "list_del corruption. prev->next should be %p, but was %p\n", entry, prev->next); CHECK_DATA_CORRUPTION(next->prev != entry, "list_del corruption. next->prev should be %p, but was %p\n", entry, next->prev); return true; }

Contributors

PersonTokensPropCommitsCommitProp
dave jonesdave jones3840.86%233.33%
linus torvaldslinus torvalds2526.88%116.67%
baruch siachbaruch siach1617.20%116.67%
kees cookkees cook1415.05%233.33%
Total93100.00%6100.00%

EXPORT_SYMBOL(__list_del_entry_valid);

Overall Contributors

PersonTokensPropCommitsCommitProp
dave jonesdave jones10653.00%430.77%
kees cookkees cook2814.00%323.08%
linus torvaldslinus torvalds2512.50%17.69%
chris metcalfchris metcalf189.00%17.69%
baruch siachbaruch siach168.00%17.69%
paul gortmakerpaul gortmaker73.50%323.08%
Total200100.00%13100.00%
Directory: lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.