svn commit: r192868 - head/sys/dev/xen/netfront
Adrian Chadd
adrian at FreeBSD.org
Wed May 27 01:45:24 UTC 2009
Author: adrian
Date: Wed May 27 01:45:23 2009
New Revision: 192868
URL: http://svn.freebsd.org/changeset/base/192868
Log:
Add in some INVARIANT checks in the TX mbuf descriptor "freelist" management code.
Slot 0 must always remain "free" and be a pointer to the first free entry in the
mbuf descriptor list. It is thus an error to have code allocate or push slot 0
back into the list.
Modified:
head/sys/dev/xen/netfront/netfront.c
Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c Wed May 27 01:30:23 2009 (r192867)
+++ head/sys/dev/xen/netfront/netfront.c Wed May 27 01:45:23 2009 (r192868)
@@ -310,6 +310,7 @@ struct netfront_rx_info {
static inline void
add_id_to_freelist(struct mbuf **list, unsigned short id)
{
+ KASSERT(id != 0, ("add_id_to_freelist: the head item (0) must always be free."));
list[id] = list[0];
list[0] = (void *)(u_long)id;
}
@@ -318,6 +319,7 @@ static inline unsigned short
get_id_from_freelist(struct mbuf **list)
{
u_int id = (u_int)(u_long)list[0];
+ KASSERT(id != 0, ("get_id_from_freelist: the head item (0) must always remain free."));
list[0] = list[id];
return (id);
}
More information about the svn-src-all
mailing list