mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
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.
This commit is contained in:
parent
7e1e3d9462
commit
0e6993e4a7
1 changed files with 2 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue