svn commit: r248418 - head/sys/kern

Gleb Smirnoff glebius at FreeBSD.org
Sun Mar 17 07:44:17 UTC 2013


  In r248418 and r248417 another change from my tree leaked:

- Removing M_FREELIST flag, that comes from historical mbuf
  allocator predating FreeBSD 5.x.

On Sun, Mar 17, 2013 at 07:41:14AM +0000, Gleb Smirnoff wrote:
T> Author: glebius
T> Date: Sun Mar 17 07:41:14 2013
T> New Revision: 248418
T> URL: http://svnweb.freebsd.org/changeset/base/248418
T> 
T> Log:
T>   In m_align() add assertions that mbuf is virgin, similar to assertions
T>   in M_ALIGN(), MH_ALIGN, MEXT_ALIGN() macros.
T> 
T> Modified:
T>   head/sys/kern/uipc_mbuf.c
T> 
T> Modified: head/sys/kern/uipc_mbuf.c
T> ==============================================================================
T> --- head/sys/kern/uipc_mbuf.c	Sun Mar 17 07:39:45 2013	(r248417)
T> +++ head/sys/kern/uipc_mbuf.c	Sun Mar 17 07:41:14 2013	(r248418)
T> @@ -395,7 +395,7 @@ m_demote(struct mbuf *m0, int all)
T>  			m_freem(m->m_nextpkt);
T>  			m->m_nextpkt = NULL;
T>  		}
T> -		m->m_flags = m->m_flags & (M_EXT|M_RDONLY|M_FREELIST|M_NOFREE);
T> +		m->m_flags = m->m_flags & (M_EXT|M_RDONLY|M_NOFREE);
T>  	}
T>  }
T>  
T> @@ -1877,14 +1877,22 @@ m_mbuftouio(struct uio *uio, struct mbuf
T>  void
T>  m_align(struct mbuf *m, int len)
T>  {
T> +#ifdef INVARIANTS
T> +	const char *msg = "%s: not a virgin mbuf";
T> +#endif
T>  	int adjust;
T>  
T> -	if (m->m_flags & M_EXT)
T> +	if (m->m_flags & M_EXT) {
T> +		KASSERT(m->m_data == m->m_ext.ext_buf, (msg, __func__));
T>  		adjust = m->m_ext.ext_size - len;
T> -	else if (m->m_flags & M_PKTHDR)
T> +	} else if (m->m_flags & M_PKTHDR) {
T> +		KASSERT(m->m_data == m->m_pktdat, (msg, __func__));
T>  		adjust = MHLEN - len;
T> -	else
T> +	} else {
T> +		KASSERT(m->m_data == m->m_dat, (msg, __func__));
T>  		adjust = MLEN - len;
T> +	}
T> +
T>  	m->m_data += adjust &~ (sizeof(long)-1);
T>  }
T>  

-- 
Totus tuus, Glebius.


More information about the svn-src-all mailing list