uipc_mbuf.c (254799) | uipc_mbuf.c (254804) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1988, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)uipc_mbuf.c 8.2 (Berkeley) 1/4/94 30 */ 31 32#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1982, 1986, 1988, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)uipc_mbuf.c 8.2 (Berkeley) 1/4/94 30 */ 31 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: head/sys/kern/uipc_mbuf.c 254799 2013-08-24 16:57:44Z andre $"); | 33__FBSDID("$FreeBSD: head/sys/kern/uipc_mbuf.c 254804 2013-08-24 19:51:18Z andre $"); |
34 35#include "opt_param.h" 36#include "opt_mbuf_stress_test.h" 37#include "opt_mbuf_profiling.h" 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/kernel.h> --- 391 unchanged lines hidden (view full) --- 433 b = (caddr_t)(a + (m->m_flags & M_EXT ? m->m_ext.ext_size : 434 ((m->m_flags & M_PKTHDR) ? MHLEN : MLEN))); 435 if ((caddr_t)m->m_data < a) 436 M_SANITY_ACTION("m_data outside mbuf data range left"); 437 if ((caddr_t)m->m_data > b) 438 M_SANITY_ACTION("m_data outside mbuf data range right"); 439 if ((caddr_t)m->m_data + m->m_len > b) 440 M_SANITY_ACTION("m_data + m_len exeeds mbuf space"); | 34 35#include "opt_param.h" 36#include "opt_mbuf_stress_test.h" 37#include "opt_mbuf_profiling.h" 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/kernel.h> --- 391 unchanged lines hidden (view full) --- 433 b = (caddr_t)(a + (m->m_flags & M_EXT ? m->m_ext.ext_size : 434 ((m->m_flags & M_PKTHDR) ? MHLEN : MLEN))); 435 if ((caddr_t)m->m_data < a) 436 M_SANITY_ACTION("m_data outside mbuf data range left"); 437 if ((caddr_t)m->m_data > b) 438 M_SANITY_ACTION("m_data outside mbuf data range right"); 439 if ((caddr_t)m->m_data + m->m_len > b) 440 M_SANITY_ACTION("m_data + m_len exeeds mbuf space"); |
441 if ((m->m_flags & M_PKTHDR) && m->m_pkthdr.header) { 442 if ((caddr_t)m->m_pkthdr.header < a || 443 (caddr_t)m->m_pkthdr.header > b) 444 M_SANITY_ACTION("m_pkthdr.header outside mbuf data range"); 445 } | |
446 447 /* m->m_nextpkt may only be set on first mbuf in chain. */ 448 if (m != m0 && m->m_nextpkt != NULL) { 449 if (sanitize) { 450 m_freem(m->m_nextpkt); 451 m->m_nextpkt = (struct mbuf *)0xDEADC0DE; 452 } else 453 M_SANITY_ACTION("m->m_nextpkt on in-chain mbuf"); --- 287 unchanged lines hidden (view full) --- 741 /* Expand first/last mbuf to cluster if possible. */ 742 if (!prep && !(mm->m_flags & M_EXT) && len > M_TRAILINGSPACE(mm)) { 743 bcopy(mm->m_data, &buf, mm->m_len); 744 m_clget(mm, how); 745 if (!(mm->m_flags & M_EXT)) 746 return NULL; 747 bcopy(&buf, mm->m_ext.ext_buf, mm->m_len); 748 mm->m_data = mm->m_ext.ext_buf; | 441 442 /* m->m_nextpkt may only be set on first mbuf in chain. */ 443 if (m != m0 && m->m_nextpkt != NULL) { 444 if (sanitize) { 445 m_freem(m->m_nextpkt); 446 m->m_nextpkt = (struct mbuf *)0xDEADC0DE; 447 } else 448 M_SANITY_ACTION("m->m_nextpkt on in-chain mbuf"); --- 287 unchanged lines hidden (view full) --- 736 /* Expand first/last mbuf to cluster if possible. */ 737 if (!prep && !(mm->m_flags & M_EXT) && len > M_TRAILINGSPACE(mm)) { 738 bcopy(mm->m_data, &buf, mm->m_len); 739 m_clget(mm, how); 740 if (!(mm->m_flags & M_EXT)) 741 return NULL; 742 bcopy(&buf, mm->m_ext.ext_buf, mm->m_len); 743 mm->m_data = mm->m_ext.ext_buf; |
749 mm->m_pkthdr.header = NULL; | |
750 } 751 if (prep && !(mm->m_flags & M_EXT) && len > M_LEADINGSPACE(mm)) { 752 bcopy(mm->m_data, &buf, mm->m_len); 753 m_clget(mm, how); 754 if (!(mm->m_flags & M_EXT)) 755 return NULL; 756 bcopy(&buf, (caddr_t *)mm->m_ext.ext_buf + 757 mm->m_ext.ext_size - mm->m_len, mm->m_len); 758 mm->m_data = (caddr_t)mm->m_ext.ext_buf + 759 mm->m_ext.ext_size - mm->m_len; | 744 } 745 if (prep && !(mm->m_flags & M_EXT) && len > M_LEADINGSPACE(mm)) { 746 bcopy(mm->m_data, &buf, mm->m_len); 747 m_clget(mm, how); 748 if (!(mm->m_flags & M_EXT)) 749 return NULL; 750 bcopy(&buf, (caddr_t *)mm->m_ext.ext_buf + 751 mm->m_ext.ext_size - mm->m_len, mm->m_len); 752 mm->m_data = (caddr_t)mm->m_ext.ext_buf + 753 mm->m_ext.ext_size - mm->m_len; |
760 mm->m_pkthdr.header = NULL; | |
761 } 762 763 /* Append/prepend as many mbuf (clusters) as necessary to fit len. */ 764 if (!prep && len > M_TRAILINGSPACE(mm)) { 765 if (!m_getm(mm, len - M_TRAILINGSPACE(mm), how, MT_DATA)) 766 return NULL; 767 } 768 if (prep && len > M_LEADINGSPACE(mm)) { --- 1413 unchanged lines hidden --- | 754 } 755 756 /* Append/prepend as many mbuf (clusters) as necessary to fit len. */ 757 if (!prep && len > M_TRAILINGSPACE(mm)) { 758 if (!m_getm(mm, len - M_TRAILINGSPACE(mm), how, MT_DATA)) 759 return NULL; 760 } 761 if (prep && len > M_LEADINGSPACE(mm)) { --- 1413 unchanged lines hidden --- |